猿问

从包.json加载单独的 .env

"start:dev": "set NODE_ENV=development&&nodemon ./bin/www",
"start:test": "set NODE_ENV=testing&&nodemon ./bin/www",

我有两个单独的 .env 文件 dev.env 和 test.env 我想在 npm 上运行启动:开发和加载测试.env 在 npm 上运行启动:测试

我已经搜索了互联网上的每个地方,但没有帮助。

任何帮助是值得赞赏的。


米琪卡哇伊
浏览 106回答 3
3回答

动漫人物

只能在 npm 脚本中设置节点 env。要导入文件,您需要在服务器文件上编写代码。在服务器文件中导入 dotenvimport dotenv from "dotenv";orconst dotenv = require("dotenv");使用以下代码导入特定的 env 文件。let envConfig={}if (process.env.NODE_ENV === "development") {  if (fs.existsSync(".env.development")) {    envConfig = dotenv.parse(fs.readFileSync(".env.development"));  } } else if(process.env.NODE_ENV === "testing"){ if (fs.existsSync(".env.test")) {    envConfig = dotenv.parse(fs.readFileSync(".env.test"));  } } for (const k in envConfig) {    process.env[k] = envConfig[k];  }

慕哥9229398

NPM 包加载默认情况下调用的文件,但可以覆盖此行为。因此,您可以执行如下操作:dotenv.envconst { config } = require('dotenv')if (process.env.NODE_ENV === 'development') {    config({ path: '/full/path/to/your/dev.env' })} else if (process.env.NODE_ENV === 'testing') {    config({ path: '/full/path/to/your/test.env' })}

米脂

我相信这个答案有一个解决方案给你:scripts: {  "set-env:production": "export $(cat .production.env | grep \"^[^#;]\" |xargs)",  "set-env:development": "export $(cat .env | grep \"^[^#;]\" |xargs)",}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答