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

时间:2017-11-03 13:12:03

标签: configuration server loopbackjs

所以我想运行多个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();
});

1 个答案:

答案 0 :(得分:0)

好的,似乎当我用sudo运行LoopBack时,会应用配置文件。非常混乱。

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