对于 Node.js,如果 dotenv 未包含在 app.js 之外的其他文件中,为什么它会触发错误?
With Node.js why might dotenv trigger an error if it is not included in additional files besides app.js?
环境: Node.js,dotenv
require('dotenv').config()
通常只在主文件中需要,例如 app.js。通过该调用 process.env
可以在应用程序的每个文件中引用。这个答案同意,
然而,我只是 运行 在一个实例中,如果我不在附加文件中包含 require('dotenv').config()
,我会收到一个错误,我不确定为什么。
简化示例:
app.js
const path = require('path');
// Custom path to .env file.
require('dotenv').config({ path: path.join(__dirname, '/models/.env')});
const middlewareFile = require('./controllers/middleware-file');
中间件-file.js
const USPS = require('usps-webtools-promise').default;
const usps = new USPS({
userId: process.env.USPS_USER_ID,
properCase: Boolean
});
usps-webtools-promise 似乎是触发错误的模块。
如果我不在中间件顶部包含 dotenv 引用-file.js USPS 模块会抛出错误。它正好指向值的第一个字母 process.env.USPS_USER_ID
.
throw new error_1.default("Must pass USPS userId");
USPSError [USPS Webtools Error]: Must pass USPS userId
at Object. (c:\website\controllers\middleware-file.js:35:14)
我可以通过在文件顶部添加 dotenv 来解决错误。
const path = require('path');
require('dotenv').config({ path: path.join(__dirname, '../models/.env')});
确保调用 require('dotenv').config({ path: path.join(__dirname, '../models/.env')});
as early as possible in your application。此外,您可以记录结果或检查错误:
const dotenv = require('dotenv').config({ path: path.join(__dirname, '/models/.env')});
if (dotenv.error) {
// Something went wrong
console.error(dotenv.error);
} else {
// Log parsed values
console.log(dotenv.parsed);
}
环境: Node.js,dotenv
require('dotenv').config()
通常只在主文件中需要,例如 app.js。通过该调用 process.env
可以在应用程序的每个文件中引用。这个答案同意,
然而,我只是 运行 在一个实例中,如果我不在附加文件中包含 require('dotenv').config()
,我会收到一个错误,我不确定为什么。
简化示例:
app.js
const path = require('path');
// Custom path to .env file.
require('dotenv').config({ path: path.join(__dirname, '/models/.env')});
const middlewareFile = require('./controllers/middleware-file');
中间件-file.js
const USPS = require('usps-webtools-promise').default;
const usps = new USPS({
userId: process.env.USPS_USER_ID,
properCase: Boolean
});
usps-webtools-promise 似乎是触发错误的模块。
如果我不在中间件顶部包含 dotenv 引用-file.js USPS 模块会抛出错误。它正好指向值的第一个字母 process.env.USPS_USER_ID
.
throw new error_1.default("Must pass USPS userId");
USPSError [USPS Webtools Error]: Must pass USPS userId
at Object. (c:\website\controllers\middleware-file.js:35:14)
我可以通过在文件顶部添加 dotenv 来解决错误。
const path = require('path');
require('dotenv').config({ path: path.join(__dirname, '../models/.env')});
确保调用 require('dotenv').config({ path: path.join(__dirname, '../models/.env')});
as early as possible in your application。此外,您可以记录结果或检查错误:
const dotenv = require('dotenv').config({ path: path.join(__dirname, '/models/.env')});
if (dotenv.error) {
// Something went wrong
console.error(dotenv.error);
} else {
// Log parsed values
console.log(dotenv.parsed);
}