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

LoopBack does not read port property from config.json (or other config files)

所以我想 运行 多个 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 并且当我 wget 时,响应 (404) 来自 8080 8082 没有响应,因为没有服务器服务于该端口。

package.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
}

好吧,看来当我运行 LoopBack with sudo 时,配置文件被应用了。很混乱。

所以命令node .会导致错误的端口,sudo node .会从server/config.json读取端口。似乎其他配置参数被正确读取,即使没有 sudo,出于某种原因 PORT 是一个特例。有一个,说明这是NodeJS + Express的问题,不是LoopBack的问题