gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:41:01 26 4
gpt4 key购买 nike

了解到包含API secret key 是一种不好的做法,我已经进行了一些研究,并试图学习如何创建自定义process.env

看完之后:

  • Node.js Everywhere with Environment Variables!
  • How to set NODE_ENV to production/development in OS X
  • How to set process.env from the file in NodeJS?
  • dotenv file is not loading environment variables

  • 我正在尝试根据 process.env.NODE_ENV在本地设置一个env文件。该应用程序将托管在Heroku上,并且在我的.gitignore中,我具有 dev.env,但是当我尝试在本地使用 dotenv 时,我得到了 undefined。我已经在终端中使用 export NODE_ENV=development在本地设置了环境。当我运行 npm startnodemon命令都返回 undefined,但是在env.js中,我得到 Testing for: development,例如:
    nodemon

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

    这是我所拥有的:

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

    config/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')
    }

    config/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将是验证。如果有更好的方法,请教育我。

    最佳答案

    重新阅读有关 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

    关于node.js - 为什么我的自定义process.env在dotenv中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57213162/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com