【发布时间】:2017-12-26 21:41:32
【问题描述】:
我的问题如下,我正在运行一个我用 Node.js 编写的 WebSocket 服务器,并在主要使用 Laravel 构建的环境中运行。为了像 Laravel 一样使用 .env 文件,我使用了 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 有关,但我不确定为什么文件中的路径会发生变化(给我不同的 process.env 输出),即使 node node/RunServer.js 和 cd node; node RunServer.js 运行完全相同的东西。有对此的解释吗?
【问题讨论】:
标签: javascript node.js environment-variables