反应本性无法为NODE_ENV变量分配生产



我正在尝试利用process.env.node_env在我的React Native应用程序的环境之间切换,并且在此处面对两个问题

1。将参数分配给node_env似乎并没有直接更改env值,

执行以下命令显示它更改了process.env.node_env value,但似乎没有更改global.process.env.node_env

执行命令:

NODE_ENV=development npm start -- --reset-cache

输出:请注意,第二个日志语句仍在打印开发。

console.log("printing the changed value - ", process.env.NODE_ENV); // --> printing the changed value - production
console.log("checking the env content - ", process.env); // ---> checking the env content - { NODE_ENV: 'development' }

我尝试的解决方法是将process.env.node_env分配给全局实例,

global.process.env.NODE_ENV = process.env.NODE_ENV

请建议这是一个很好的方法。

2。将"生产"分配给Node_env投掷的值,试图分配以读取属性错误,

执行命令:

NODE_ENV=production npm start -- --reset-cache

请找到附带的图像 - todsttoreadonlypropertyissue

您在这里面临的问题来自错误的假设:

react-native不会以与节点相同的方式执行JavaScript。

让我们考虑以下NPM脚本:

"scripts": {
    "start": "node index.js"
}

运行SOME_VAR="some value" npm start时,process.env将包含该环境变量的条目,因为它是从定义SOME_VAR的过程中运行的。

react-native中发生了不同的事情:呼叫npm start启动了反应的包装器,该包装器将您的JavaScript代码捆绑在一起,然后将JavaScript捆绑包发送到模拟器或设备中的安装,该捆绑包在该捆绑包中执行。react-native的packager并未"向前"定义JavaScript捆绑的环境变量。


希望有些软件包有助于我们能够继续使用开发节点应用程序时使用的相同模式。

我发现一个非常有用的是babel-plugin-transform-inline-environment-variables。这是一个通用的babel插件,将process.env.SOME_VAR类型的调用转换为捆绑时间期间SOME_VAR的值。

我唯一遇到的头痛是,当我第一次试图查看它如何工作时,我正在改变环境变量,但它似乎只能"随机"起作用。原来我是webpack的缓存的受害者。如果代码没有更改,则不会更新捆绑包。然后,我了解到我必须意识到

相关内容

  • 没有找到相关文章

最新更新