pmi*_*nda 4 environment-variables node.js dotenv
我有 5 个 NodeJS 服务在运行,但其中一个有问题。
这是nodemon.json文件:
{
"watch": ["**/*.ts"],
"ext": "ts,json",
"ignore": ["./test/*.ts"],
"exec": "node -r ts-node/register -r dotenv/config Index.ts dotenv_config_path=$(pwd)/.env",
"env": {
"NODE_ENV": "development"
}
}
Run Code Online (Sandbox Code Playgroud)
它与其他服务相同。当我运行时,npm run dev我收到错误消息,具体取决于从 .env 文件中获取的值,例如:
const LOCAL_CONFIGURATION = {
PORT_APP: 8082,
MONGODB: {
SERVER: process.env.MONGO_DTE,
AUTH: {
auth: {
password:process.env.MONGO_PASSWORD,
user:process.env.MONGO_USER
}
},
},
MS_NOTIFICACION: "http://localhost:8089/notificacion",
ELASTIC_PATH: process.env.ELASTIC_PATH,
...COMMON,
};
Run Code Online (Sandbox Code Playgroud)
第一条错误消息是:
ConfigurationError: Missing node(s) option
产生该消息是因为它没有从 读取值process.env.ELASTIC_PATH,但是如果我放置了一个像“ http://with.the.correct.url ”这样的硬编码值,然后它再次尝试运行,我会收到另一个错误:
Error: Credentials must be provided when creating a service client
该错误是因为它正在尝试读取password:process.env.MONGO_PASSWORD和user:process.env.MONGO_USER
等等,所以,读取.env文件有问题。我知道该.env文件具有这些值,并且该文件是 UTF-8,没有引号等。该.env文件与其他服务是相同的文件,它在其余部分工作正常,但我不知道为什么没有被读取这里。
任何的想法?
编辑:
另外,我console.log(process.env);在config.ts文件中放入了一个 ,它显示如下值:
但是没有来自.env例如的值,在图片中有一个值,COMPUTERNAME所以如果我把console.log(process.env.COMPUTERNAME);我得到:IBM-NOT87
为什么没有得到 .env 文件?
要进一步扩展 @JBallin 答案,您需要在要使用环境变量的文件中require/import dotenv config
// for example in your index.js or app.js
require('dotenv').config()
// or
require('dotenv/config')
// if using ES6 module imports
import 'dotenv/config'
Run Code Online (Sandbox Code Playgroud)
小智 5
require('dotenv').config({ path: "./sample.env" });
在您使用环境变量的文件中,请尽早"dotenv"在方法中要求并config()指定文件的路径.env,即使它位于您的根目录或节点启动的同一目录中。
要求和指定同一目录中的文件的代码位于答案的第一行。
另外,要进一步阅读,您可以访问https://github.com/motdotla/dotenv#path
| 归档时间: |
|
| 查看次数: |
9805 次 |
| 最近记录: |