在 React on Rails 中访问 NODE_ENV 环境变量
Posted
技术标签:
【中文标题】在 React on Rails 中访问 NODE_ENV 环境变量【英文标题】:Accessing NODE_ENV environment variable in React on Rails 【发布时间】:2017-09-02 08:16:03 【问题描述】:我有一个访问 API 的 React on Rails 应用程序。我想将 API 端点配置为 localhost
以进行开发,并将 API 端点配置为我部署的应用程序的 URL 以进行生产。
client/package.json
"scripts":
"build:production": "NODE_ENV=production webpack --config webpack.config.js",
,
client/webpack.config.js
const devBuild = process.env.NODE_ENV !== 'production';
const config =
entry: [
'es5-shim/es5-shim',
'es5-shim/es5-sham',
'babel-polyfill',
'./app/bundles/Main/startup/registration',
],
output:
filename: 'webpack-bundle.js',
path: __dirname + '/../app/assets/webpack',
,
resolve:
extensions: ['.js', '.jsx'],
,
plugins: [
new webpack.EnvironmentPlugin( NODE_ENV: 'development' ),
]
我看到 process.env.NODE_ENV
在 config/webpack.config.js 中可用(此处用于将源映射开发工具添加到模块导出),但我想要一种方法来查看我的 React 代码中的环境在client/
的某个地方。如果有的话,我有什么选择?
【问题讨论】:
我不确定 React on Rails,但在我的 React 环境中,我可以访问相同的变量 - process.env.NODE_ENV。你试过吗? 是的,很遗憾,process
没有在 /client
中定义。它在 webpack.config 中,但以某种方式访问它或将其传递给客户端目录将是理想的
【参考方案1】:
我刚刚在 Redux 操作文件中成功使用了process.env.NODE_ENV
。我正在使用下面webpack.config.js
中显示的插件定义在 webpack 中导出 NODE_ENV:
plugins: [
...
new webpack.DefinePlugin(
'process.env':
NODE_ENV: JSON.stringify('ENV_VALUE')
)
]
【讨论】:
以上是关于在 React on Rails 中访问 NODE_ENV 环境变量的主要内容,如果未能解决你的问题,请参考以下文章
Rails + React +antd + Redux环境搭建
React on Rails 可以集成到现有的 Rails 3.x 应用程序中吗?