Rails 5.1 - 如何通过webpack将环境变量传递给前端

时间:2017-07-16 07:26:52

标签: ruby-on-rails webpack webpack-dev-server

我想在api调用的前端更改api的域名。在开发时,我想要一个localhost:xxxx域和一个用于登台和生产的独立域。现在,默认的Rails webpack dev服务器在.env对象上公开了一个空的process键。

我已尝试在bin/webpack-dev-server中手动传递此配置,如下所示:

Dir.chdir(APP_PATH) do
  exec "NODE_PATH=#{NODE_MODULES_PATH} #{WEBPACK_BIN} --progress --color " \
    "--config #{DEV_SERVER_CONFIG} NODE_ENV=development #{ARGV.join(" ")}"
end 

我还尝试直接在.env添加config/shared.js对象,如下所示:

new webpack.EnvironmentPlugin(JSON.parse(JSON.stringify(Object.assign(env, { 'NODE_ENV': process.ev)))),

这两种方法都不会修改.env对象。

想法?

解决方案

使用webpack作为传递环境变量的方法。使用良好的旧Rails环境在window对象上分配环境变量。

1 个答案:

答案 0 :(得分:1)

我能够使用webpack environment plugin

来实现这一目标
// config/webpack/development.js

const webpack = require('webpack')
const environment = require('./environment')
const config = environment.toWebpackConfig()

config.plugins = (config.plugins || []).concat([
  new webpack.EnvironmentPlugin([ 'SECRET_KEY' ])
])

module.exports = config

在您的应用中,您应该能够访问process.env中的SECRET_KEY

console.log(process.env.SECRET_KEY)

希望有所帮助!