2017-12-26 64 views
0

그 제목에 저와 함께, 나는 약간 이상하다는 것을 압니다. 내 문제는 다음과 같습니다. 저는 Node.js에서 작성한 WebSocket Server를 실행 중이며 주로 Laravel로 작성된 환경에서 실행됩니다. .env 파일을 Laravel처럼 활용하려면 dotenv 패키지를 사용하고 있습니다.호출 파일이 같더라도 연결 오류가 발생하는 이유

나는 매우 이상하게 보였다. 나는 그것을 설명 할 수 전에, 내 노드 또한 당신에게 Laravel 전형적인 빠른 폴더 구조를 제공하자

htdocs 
- app 
- node 
    - RunServer.js 
    - db.js 
    .... 
- resources 
.... 

내 관측

나는 htdocs 폴더 안에 있고 내가 node node/RunServer.js을 실행

/var/www/html/bigriss/node/db.js:16 
    if (err) throw err; 
     ^

Error: connect ECONNREFUSED 127.0.1.1:3306 
.... 

cd node; node RunServer.js 동안 오류를 제공하지 않는 서버는 예상대로 실행하기 시작 : 나는 다음과 같은 오류가 발생합니다. 다음과 같이 db.js 파일은 같습니다

var mysql = require('mysql'); 
require('dotenv').config({path: '../.env'}); 

mysql.createConnection({ 
    host: process.env.DB_HOST, 
    user: process.env.DB_USERNAME, 
    password: process.env.DB_PASSWORD, 
    port: process.env.DB_PORT, 
    database: process.env.DB_DATABASE 
}).connect(function(err) { 
    if (err) throw err; 
}); 

분명히 문제가 dotenv과 관련이있다하지만 확실하지 오전하는 이유도 모두 node node/RunServer.jscd node; node RunServer.js 그러나 (나에게 다른 process.env 출력을 제공) 파일 변경의 경로 똑같은 것을 실행하십시오. 이것에 대한 설명이 있습니까?

답변

1

dotenv.config ({path : ...})에 지정된 경로가 현재 작업 디렉토리 (cwd)를 기준으로 해결 된 것으로 보입니다. 따라서 노드가 다른 디렉토리에서 실행될 경우 결과가 달라집니다.