gpt4 book ai didi

node.js - 为什么 process.env 返回一个空对象,而 process.env.prop 返回 prop 值?

转载 作者:行者123 更新时间:2023-12-03 12:09:42 33 4
gpt4 key购买 nike

因此,我在使用带有 webpack 的 react-redux 应用程序运行的 Node 机器上有一个最简单的示例(尽管我认为这对问题并不重要,但期望它在 nodejs 上)。

特定调用获得一个超值包:

console.log(process.env.NODE_ENV); // output: 'development'

通用调用一无所获:
console.log(process.env); // output: {}

我在这里想念什么?

可能相关的附加信息:
  • 我正在使用 dotenv对于test环境。
  • 我正在使用 dotenv-webpack对于开发环境。
  • 我没有将这两个用于 production部署到 Heroku 的环境
  • 该问题在所有环境中都存在。
  • 最佳答案

    process.env 的问题浏览器中的变量为空是因为浏览器无法真正访问 processnode.js .它虽然在浏览器中运行。
    process.env.ANYTHING 的使用通常通过 https://webpack.js.org/plugins/define-plugin/ 之类的插件来实现这只是简单的replace process.env.ANYTINHG 的任何出现在 BUILD 期间使用 env 变量。它真的很简单str.replace(/process.env.ANYTING/value/)这需要在构建期间完成,因为一旦您输出 dist bundle.js您无权访问 ENV变量。

    在构建期间替换

    因此,您需要确保在生产生产版本时,例如使用 yarn build您正在使用 webpack.DefinePlugin并替换那些 process.env使用当前 ENV 值调用。它们不能在运行时注入(inject)。

    在运行时注入(inject)

    当您需要在运行时访问环境变量时,在浏览器中的 JavaScript 中基本上是不可能的。有一些针对 NGINX 的 hack,可以将当前环境变量序列化为 window.ENV。变量,在您的应用程序中您不会使用 process.env但是 window.ENV .因此,您需要在构建应用程序时使用 ENV 变量,或者构建将当前 ENV 作为 json 动态输出到窗口并通过 react 访问的机制。如果您使用 docker可以通过 ENTRYPOINT 来完成否则你需要一些 bash 脚本,它总是将当前的 ENV 变量输出为 JSONindex.html你的应用

    关于node.js - 为什么 process.env 返回一个空对象,而 process.env.prop 返回 prop 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57057155/

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