LoopBack不会从config.json(或其他配置文件)读取端口属性



所以我想运行多个监听不同端口的LoopBacks(使开发更容易)。我可以通过使用PORT=808x node .来实现这一点,但我更喜欢配置的替代方案。

当我尝试使用configs时,我注意到了奇怪的行为。其他配置,如restApiRoot,与我在server/config.json中为其编写的任何内容相匹配,但端口始终为8080,除非我使用env变量或诸如此类的变量。我检查了所有配置文件的文档LoopBack读取,没有一个具有port的新值。port值从何而来?如何强制它使用server/config.json或类似官方配置文件中的那个?

更新:我的server/server.js-server/config.json和package.json文件

当我用node .命令启动时,端口变量是8080而不是8082,当我wget时,响应(404)来自80808082不给出响应,因为没有服务器为该端口提供服务。

软件包.json

{
"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"
}
}

server/server.js

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();
});

server/config.json

{
"restApiRoot": "/api",
"host": "0.0.0.0",
"port": 8082
}

好吧,当我用sudo运行LoopBack时,似乎应用了配置文件。非常令人困惑。

因此命令node .将导致错误的端口,而sudo node .将从server/config.json读取端口。即使没有sudo,似乎也能正确读取其他配置参数,因为某种原因,PORT是一种特殊情况。有一个真实的答案,表明这是一个NodeJS+Express问题,而不是LoopBack问题。

最新更新