gpt4 book ai didi

javascript - 错误 : Write After End Node. js,Express

转载 作者:行者123 更新时间:2023-11-30 00:28:47 26 4
gpt4 key购买 nike

我遇到以下错误

标题

Caught exception: Error: write after end
at ServerResponse.OutgoingMessage.write (_http_outgoing.js:413:15)
at ServerResponse.res.write (/home/projectfolder/node_modules/express/node_modules/connect/lib/middleware/compress.js:110:17)
at ServerResponse.res.end (/home/projectfolder/node_modules/express/node_modules/connect/lib/middleware/compress.js:116:14)
at ServerResponse.res.send (/home/projectfolder/node_modules/express/lib/response.js:154:8)
at fn (/home/projectfolder/node_modules/express/lib/response.js:794:10)
at View.exports.renderFile [as engine] (/home/projectfolder/node_modules/jade/lib/jade.js:222:12)
at View.render (/home/projectfolder/node_modules/express/lib/view.js:76:8)
at Function.app.render (/home/projectfolder/node_modules/express/lib/application.js:504:10)
at ServerResponse.res.render (/home/projectfolder/node_modules/express/lib/response.js:798:7)
at /home/projectfolder/app/controllers/index.js:578:9

是否有人知道此错误的原因。我知道在发送响应后我们无法写入流,但我无法找到执行此写入操作的位置并且我收到此错误。我的 app/controllers/index.js 文件代码如下。请帮忙。

index.js

var request= require("request");
var crypto = require('crypto');
var env = process.env.NODE_ENV || 'development'
, config = require('../../config/config')[env]
var async=require("async");
exports.index = function(req, res){

//some code


var data=[];
async.parallel([

function(fncallback) {

// code here
data[0]="some data1";
},
function(fncallback) {

//code here
data[1]="some data2";
},
function(fncallback) {

// code here
data[2]="some data3";
},
function(fncallback) {

//code here
data[3]="some data4";
},

],function(err,responsedata){
/*some code*/
res.render('index', {
container1:data[0],
container2:data[1],
container3:data[2],
container4:data[3]
});

});

};

server.js

var http = require('http');
var fs = require('fs')
, passport = require('passport')
, utils = require('./utils');

var fs = require('fs')
var events = require('events')
var util = require('util')
var path = require('path')

var FsPool = module.exports = function(dir) {
events.EventEmitter.call(this)
this.dir = dir;
this.files = [];
this.active = [];
this.threads = 1;
this.on('run', this.runQuta.bind(this))
};
// So will act like an event emitter
util.inherits(FsPool, events.EventEmitter);

FsPool.prototype.runQuta = function() {
if(this.files.length === 0 && this.active.length === 0) {
return this.emit('done');
}
if(this.active.length < this.threads) {
var name = this.files.shift()

this.active.push(name)
var fileName = path.join(this.dir, name);
var self = this;
fs.stat(fileName, function(err, stats) {
if(err)
throw err;
if(stats.isFile()) {
fs.readFile(fileName, function(err, data) {
if(err)
throw err;
self.active.splice(self.active.indexOf(name), 1)
self.emit('file', name, data);
self.emit('run');

});
} else {
self.active.splice(self.active.indexOf(name), 1)
self.emit('dir', name);
self.emit('run');
}
});
}
return this
};
FsPool.prototype.init = function() {
var dir = this.dir;
var self = this;
fs.readdir(dir, function(err, files) {
if(err)
throw err;
self.files = files
self.emit('run');
})
return this
};
var fsPool = new FsPool(__dirname + '/public/')

fsPool.on('file', function(fileName, fileData) {
//console.log('file name: ' + fileName)
//console.log('file data: ', fileData.toString('utf8'))

})
fsPool.on('dir', function(dirName) {
//console.log('dir name: ' + dirName)

})
fsPool.on('done', function() {
//console.log('done')
});
fsPool.init()



var env = process.env.NODE_ENV || 'development'
, config = require('./config/config')[env]
, mongoose = require('mongoose');

/*******************************cluster code starts**************/
var cluster = require('cluster');
//cluster.schedulingPolicy = cluster.SCHEDRR;
var numCPUs = require('os').cpus().length;
//var numCPUs = 10;
console.log("no of cpus"+numCPUs);
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}

cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
});
} else {
require('./config/passport').localPassport(passport, config)
var app = express();
http.globalAgent.maxSockets = 5;
app.use(passport.initialize());
app.use(passport.session());
require('./config/express')(app, config, passport);
require('./config/routes')(app, passport);
exports = module.exports = app
}
/***********************************************************/

express.js

var express = require('express')
, flash = require('connect-flash');
var MongoStore = require('connect-mongo')(express);
var env = process.env.NODE_ENV || 'development'
, config = require('./config')[env];
module.exports = function (app, config, passport) {
app.set('showStackError', true)
// should be placed before express.static
app.use(express.compress({
filter: function (req, res) {
return /json|text|javascript|css/.test(res.getHeader('Content-Type'))
},
level: 9
}))

app.use(express.favicon());
app.enable('view cache');
var oneYear = 31557600000;
app.use(express.static(config.root + '/public',{ maxAge: oneYear }))

//console.log(config.root);
// don't use logger for test env
if (process.env.NODE_ENV !== 'test') {
app.use(express.logger('dev'))
}

// set views path, template engine and default layout
app.set('views', config.root + '/app/views')
app.set('view engine', 'jade')

app.configure(function () {

app.use(express.cookieParser())

app.use(express.session({
secret: '***********',
// 2 * 60 * 60 * 1000
cookie: {
expires: new Date(Date.now() + 7200000)
},
saveUninitialized: false, // don't create session until something stored
resave: false, //don't save session if unmodified
store: new MongoStore({
host: 'hostname', // Default, optional
port: portno, // Default, optional
db: 'db_name', // Required
auto_reconnect:true,
w: 1, // Default,
ssl: false, // Default
ttl: 15 * 24 * 60 * 60, // = 15 days. Default
touchAfter: 24 * 3600, // time period in seconds
autoRemove: 'interval',
autoRemoveInterval: 10, // In minutes. Default
}, function(e) {
// Start the app by listening on <port>
var port = process.env.PORT || config.guiPort;
var server = app.listen(port, '192.168.1.104');
console.log('Express app started on port '+port);
})
}));

app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride())
//app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
//passport.authenticate('remember-me');
app.use(passport.authenticate('remember-me'));
app.use(flash());
// routes should be at the last

app.use(function(req,res,next){
res.locals.session = req.session;

next();
});

app.use(app.router)

})

// development env config
// to display nice formatted html
app.configure('development', function () {
app.locals.pretty = true
});
}

我找不到这个错误的原因,请帮助我。在此先感谢。

最佳答案

您在此对象声明中有错字:

res.render('index', {
container1:data[0];
container2:data[1];
container3:data[2];
container4:data[3];
});

应该是:

res.render('index', {
container1:data[0],
container2:data[1],
container3:data[2],
container4:data[3]
});

关于javascript - 错误 : Write After End Node. js,Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30395428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com