node.js的新手。
我按照本指南设置了带有mocha的node.js应用的集成测试:http://taylor.fausak.me/2013/02/17/testing-a-node-js-http-server-with-mocha/
按如下方式创建服务器:
var http = require('http');
this.server = http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, world!\n');
});
exports.listen = function () {
this.server.listen.apply(this.server, arguments);
};
exports.close = function (callback) {
this.server.close(callback);
};
listen和close函数是这样的:
问题:
如何创建在启动时调用server.listen的启动脚本?目前推出时带有:
"scripts": {
"test": "mocha --reporter spec",
"start": "nodemon server.js"
}
^ - 我想在上面的脚本中添加server.listen()的调用。
答案 0 :(得分:1)
您可以测试脚本是否已从命令行调用,或者require
'用其他脚本调用以下代码:
const PORT = process.argv[2] || 8080; // whatever port number
if (require.main === module) {
this.server.listen(PORT); // to start listening
// or, if you are certain that it will always be
// called the same way... you could apply a slice
// of process.argv to server.listen
//
// this.server.listen.apply(this.server, process.argv.slice(2))
//
// https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback
}
如果被另一个脚本使用,这将立即启动服务器直接调用它,并等待在导入的模块上调用listen。
你可以将一个可选的port参数传递给npm start脚本,如下所示:
"start": "nodemon server.js 8001"