在 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 解决代理错误

我无法使用 React_on_Rails gem 注册组件

React on Rails 可以集成到现有的 Rails 3.x 应用程序中吗?

顺便说一句,我是一名学生,如何在汉堡菜单中的 React on Rails 中添加注销

使用 React、Ruby on rails 5 和 CarrierWave 多次上传文件