为什么我的自定义 process.env 在 dotenv 中不起作用?

新手上路,请多包涵

了解到包含 API 密钥是一种不好的做法,我做了一些研究并尝试学习如何创建自定义 process.env

看完之后:

我正在尝试基于 process.env.NODE_ENV 在本地设置一个 env 文件。该应用程序将托管在 Heroku 上,在我的 .gitignore 中,我有 dev.env 但是当我尝试在本地使用 dotenv 我得到一个 undefined 。我已在终端中使用 export NODE_ENV=development 在本地设置环境。 When I run the command npm start or nodemon both return undefined but in env.js I get Testing for: development , example:

 nodemon

[nodemon] 1.19.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`
Testing for: development
undefined

这是我所拥有的:

应用程序.js

 const keys = require('./config/env')
return console.log(process.env.PORT)

配置/env.js

 const env = process.env.NODE_ENV
console.log(`Testing for: ${env}`)
try {
  switch(env) {
    case 'undefined':
      Error('Environment undefined, if local in terminal: export NODE_ENV=development')
      break
    case 'development':
      require('dotenv').config({
        path: './dev.env'
      })
      break
    case 'production':
      require('dotenv').config({
        path: './prod.env'
      })
      break
    default:
      Error('Unrecognized Environment')
  }
} catch (err) {
  Error('Error trying to run file')
}

配置/dev.env

 ## Port number to run Application
PORT=4321

但是在 app.js 中,当我使用 return console.log(process.env.PORT)return console.log(keys.PORT) 进行测试时,它们都记录了 undefined ,为什么?使用 dotenv 时,我似乎在 env.js 中做错了什么。

为了澄清,我什至还没有推向 Heroku, prod.env 将是验证。如果有更好的方法请不吝赐教。

原文由 DᴀʀᴛʜVᴀᴅᴇʀ 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

在重新阅读有关 path 的文档后,我发现了哪里出了问题,例如:

 require('dotenv').config({ path: '/full/custom/path/to/your/env/vars' })

更改后:

 case 'development':
  require('dotenv').config({
    path: './dev.env'
  })
  break

至:

 case 'development':
  require('dotenv').config({
    path: `${__dirname}/dev.env`
  })
  break

有用。所以我的错误是范围问题。无需设置 const keys 所以只需使用 require('./config/env') 我可以访问任何自定义进程,例如:

 process.env.CUSTOM

或者在这种情况下,它将是:

 process.env.PORT

来自 app.js

原文由 DᴀʀᴛʜVᴀᴅᴇʀ 发布,翻译遵循 CC BY-SA 4.0 许可协议

您好,首先使用 switch(env.trim()) ,然后更改路径值 path: './config/dev.env' 。祝你好运。

原文由 Stanislav Baturin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏