nod*_*nja 22 javascript development-environment web-services environment-variables node.js
我使用.env文件来保存服务器的环境变量.如果我使用foreman start运行服务器,这是有效的.但它不适用于nodemon.
我想使用nodemon,因为它会在您修改服务器时自动重新启动.如何让nodemon使用.env文件?
Dan*_*llo 32
我有一个生产 Procfile:
web: node web.js
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个Procfile_dev文件:
web: nodemon web.js
Run Code Online (Sandbox Code Playgroud)
当我在开发环境中运行时:
$ foreman start -f Procfile_dev
Run Code Online (Sandbox Code Playgroud)
它的作用就像一个魅力,不会影响生产.
fli*_*ide 23
您可以使用以下命令让nodemon直接使用.env
$: env $(cat .env) nodemon app.js
Run Code Online (Sandbox Code Playgroud)
请注意,如果对.env进行更改,则必须重新启动它.如果.env文件中有任何空格,则不会喜欢它.
Tom*_*Tom 15
这样就可以做到,
nodemon -w . -w .env index.js
Run Code Online (Sandbox Code Playgroud)
工作原理:
“-w”。告诉nodemon 监视当前目录中的文件
“-w .env”告诉nodemon 监视.env 文件
“index.js”只是发生更改时要运行的文件(可以是任何内容)
使用最新版本的Node(从io.js 1.6开始),您可以将-r标志传递给需要启动的模块.这允许您.env使用nodemon 直接加载--exec:
nodemon --exec 'node -r dotenv/config'
Run Code Online (Sandbox Code Playgroud)
这需要dotenv安装npm包.
小智 7
将本地配置变量放在.env文件中,并使用以下命令运行foreman和nodemon
$ foreman run nodemon web.js
Run Code Online (Sandbox Code Playgroud)
就我而言,我使用的是 TypeScript,该.env文件仅用于开发。我希望我的代码与文件分离.env,但我不想import 'dotenv/config'在代码中的任何地方分离。这是我的解决方案:
我的nodemon配置:
{
"watch": [
"src",
".env"
],
"ext": ".ts",
"exec": "ts-node -r dotenv/config ./src/index.ts"
}
Run Code Online (Sandbox Code Playgroud)
我的 NPM 脚本:
"start:dev": "nodemon"
Run Code Online (Sandbox Code Playgroud)
在此解决方案中ts-node需要 dotenv,它在主应用程序启动之前设置环境变量。这意味着我的代码中没有任何地方需要import 'dotenv/config'. dotenv可以成为开发依赖项,这也会阻止在部署代码后加载 dotenv。
npm i dotenv.env在内部创建文件和您的变量添加脚本以执行
"dev": "nodemon -r dotenv/config ./app/index.js " or
"start": "node -r dotenv/config ./app/index.js "
Run Code Online (Sandbox Code Playgroud)使用npm run dev或 运行应用npm run start
| 归档时间: |
|
| 查看次数: |
14672 次 |
| 最近记录: |