所以我想运行多个LoopBacks监听不同的端口(使开发更容易)。我可以使用PORT=808x node .
来实现这一点,但我更喜欢配置替代方案。
当我尝试使用配置时,我注意到了奇怪的行为。其他配置,例如restApiRoot
匹配我在server/config.json
中为它写的任何内容,但端口始终是8080
,除非我使用env变量等。我检查了LoopBack读取的所有配置文件的文档,其中没有它们具有port
的新值。 port
值来自何处?如何强制它使用server/config.json
或类似的官方配置文件中的那个?
更新:我的server / server.js server / config.json和package.json文件
当我使用node .
命令启动时,端口变量为8080
而不是8082
,当我忘记时,响应(404)来自8080
和{ {1}}没有响应,因为没有服务器为该端口提供服务。
的package.json
8082
服务器/ server.js
{
"name": "external-server",
"version": "1.0.0",
"main": "server/server.js",
"scripts": {
"pretest": "jshint ."
},
"dependencies": {
"compression": "^1.0.3",
"cors": "^2.5.2",
"loopback": "^2.22.0",
"loopback-boot": "^2.6.5",
"loopback-component-explorer": "^2.1.0",
"loopback-connector-mysql": "^2.4.1",
"loopback-datasource-juggler": "^2.39.0",
"serve-favicon": "^2.0.1"
},
"devDependencies": {
"jshint": "^2.5.6"
}
}
服务器/ config.json
var loopback = require('loopback');
var boot = require('loopback-boot');
var app = module.exports = loopback();
app.start = function() {
// start the web server
return app.listen(function() {
app.emit('started');
console.log(app.get('port'))
var baseUrl = app.get('url').replace(/\/$/, '');
console.log('Web server listening at: %s', baseUrl);
if (app.get('loopback-component-explorer')) {
var explorerPath = app.get('loopback-component-explorer').mountPath;
console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
}
});
};
// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
if (err) throw err;
// start the server if `$ node server.js`
if (require.main === module)
app.start();
});
答案 0 :(得分:0)
好的,似乎当我用sudo运行LoopBack时,会应用配置文件。非常混乱。
因此命令node .
将导致错误的端口,sudo node .
将从server/config.json
读取端口。即使没有sudo
,似乎也可以正确读取其他配置参数,由于某种原因,PORT是一种特殊情况。有一个realted answer,表明这是一个NodeJS + Express问题,而不是LoopBack问题。