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);
};
监听和关闭函数是这样的:
- require('server') 是幂等的
- 服务器可以在测试中启动和停止
问题:
如何创建在启动时调用 server.listen 的启动脚本?目前它的启动方式是:
"scripts": {
"test": "mocha --reporter spec",
"start": "nodemon server.js"
}
^-- 我想在上面的脚本中添加对 server.listen() 的调用。
最佳答案
您可以使用以下代码测试该脚本是否已从命令行调用或由另一个脚本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
}
如果直接调用它,这将立即启动您的服务器监听,如果被另一个脚本使用,则等待在导入的模块上调用监听。
您可以将可选的端口参数传递给 npm 启动脚本,如下所示:
"start": "nodemon server.js 8001"
关于javascript - Node.js 启动时运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44688678/