2017-11-03 1 views
0

그래서 여러 개의 LoopBacks를 실행하여 다른 포트를 듣고 싶습니다. PORT=808x node .을 사용하여이 작업을 수행 할 수 있지만 구성된 대안을 선호합니다.LoopBack은 config.json (또는 다른 설정 파일)에서 포트 속성을 읽지 않습니다.

configs를 사용하려고 시도했을 때 이상한 동작이 나타났습니다. restApiRoot과 같은 다른 구성은 server/config.json에 쓰는 것과 일치하지만 env 변수 등을 사용하지 않는 한 포트는 항상 8080입니다. LoopBack이 읽는 모든 구성 파일에 대한 설명서를 확인했으며 그 중 일부는 port에 대한 새 값을 가지고 있습니다. 그게 port 값은 어디에서 왔습니까? server/config.json 또는 이와 유사한 공식 구성 파일에있는 파일을 사용하려면 어떻게해야합니까?

UPDATE : 내 서버/server.js 서버/config.json 및 package.json 내가 node . 명령이 시작

은 포트 변수가 대신 80828080이다 파일과 나는을은 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.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(); 
}); 

서버/좋아요 config.json

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

루프백 버전을 사용하고 있습니까? config.json에서 포트를 변경하면 작동합니다. config.json 및 server.js 코드로 질문을 편집하고 루프백 버전을 언급하는 것을 잊지 마십시오. 감사합니다. –

답변

0

, 그것은 보인다 내가 sudo를 함께 루프백을 실행하면, 구성 파일이 적용됩니다. 매우 혼란 스럽습니다.

따라서 node . 명령은 잘못된 포트로 연결되며 sudo node .server/config.json에서 포트를 읽습니다. sudo이 없어도 다른 구성 매개 변수가 올바르게 읽혀지는 것 같습니다. PORT는 특별한 경우입니다. realted answer이 있습니다. 이것은 루프백 문제가 아니라 NodeJS + Express 문제임을 보여줍니다.

관련 문제