在React on Rails中访问NODE_ENV环境变量

3
我有一个与API交互的React on Rails应用程序。我希望在开发时将API端点配置为localhost,在生产时将其配置为我的部署应用程序的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中可用(在这里用于添加源映射工具到模块输出),但我想要一种方法在client/的React代码中查看环境。如果有的话,我的选择是什么?


我不确定关于React on Rails,但在我的React环境中,我可以访问相同的变量 - process.env.NODE_ENV。你试过了吗? - Josh F
是的,在/client中没有定义process。它在webpack.config中,但最好有一种方法可以访问它或将其传递到客户端目录。 - Matthew Hinea
1个回答

3

我刚刚成功地在 Redux action 文件中使用了 process.env.NODE_ENV。我在 webpack.config.js 中使用以下插件定义导出了 NODE_ENV:

plugins: [
    ...
    new webpack.DefinePlugin({
        'process.env': {
            NODE_ENV: JSON.stringify('ENV_VALUE')
        }
    })
]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接