我正在使用 .env 文件来保存服务器的环境变量。如果我使用工头启动运行服务器,这将有效。但它不适用于nodemon。
我想改用 nodemon,因为它会在您修改服务器时自动重新启动。如何让 nodemon 使用 .env 文件?
我正在使用 .env 文件来保存服务器的环境变量。如果我使用工头启动运行服务器,这将有效。但它不适用于nodemon。
我想改用 nodemon,因为它会在您修改服务器时自动重新启动。如何让 nodemon 使用 .env 文件?
npm i dotenv
.env
文件和你的变量添加要执行的脚本
"dev": "nodemon -r dotenv/config ./app/index.js " or
"start": "node -r dotenv/config ./app/index.js "
npm run dev
使用或 运行应用程序npm run start
我有一个生产Procfile:
web: node web.js
所以我创建了一个 Procfile_dev 文件:
web: nodemon web.js
当我在开发环境中时,我运行:
$ foreman start -f Procfile_dev
它就像一个魅力,不影响生产。
您可以使用以下命令让 nodemon 直接使用 .env
$: env $(cat .env) nodemon app.js
请注意,如果您对 .env 进行更改,则必须重新启动它,如果您的 .env 文件中有任何空格,它将不喜欢它。
使用最新版本的 Node(自 io.js 1.6 起),您可以将-r
标志传递给它以在启动时要求模块。这使您可以.env
使用 nodemon直接加载--exec
:
nodemon --exec 'node -r dotenv/config'
这需要dotenv
安装 npm 包。
将本地配置变量放在 .env 文件中,并使用以下命令与 nodemon 一起运行工头
$ foreman run nodemon web.js
This works pretty well for me so far,
nodemon -w . -w .env index.js
How it works:
"-w ." tells nodemon to watch the files in the current directory
"-w .env" tells nodemon to watch the .env file
"index.js" is just the file to run when changes occur (could be anything)
线程死灵术!
使用grunt-env从你的 heroku 配置中加载环境变量。
分三步
# .env ======
PORT=5000
WHO_AM_I="Who Knows"
"dev": "nodemon -r dotenv/config src/app.js"
您可以使用 > process.env.varible_name 访问您定义的变量
如果你想在其中运行 Typescriptnodemon
并需要一个特定 .env
的文件,dotenv
那么你可以这样做:
在package.json
脚本中:
"dev": "nodemon -r dotenv/config src/myApp.ts dotenv_config_path=/path/to/your/env/file",
遇到 Typescript 扩展时nodemon.json
要nodemon
使用的一行:ts-node
"execMap": {"ts": "node -r ts-node/register"},
这对于将开发.env
文件.env.development.local
用于本地开发工作并将主.env
文件用于实时生产变量很有用。
使用 -w 键来指定 nodemon 要额外监视的内容。
"scripts": {
"dev": "env-cmd nodemon -w app -w *.js -w .env server.js"
}
不要忘记重新运行npm run dev
Heroku Procfile
更改: web: node app.js 到 web: nodemon app.js
要将 dotenv 包和任何声明的 .env 变量加载到环境中,您可以执行以下操作:
nodemon -r dotenv/config myapp.js