javascript - 同构 JS 应用程序中的环境变量 : Webpack find & replace?

标签 javascript webpack

我正在使用 webpack 捆绑同构 JS 应用程序 (based on this example),以便浏览器运行与服务器相同的代码。一切都运行顺利,除了我有一个 config.js,其中一些设置是从服务器上的环境变量中提取的:

module.exports = {
  servers:
    auth: process.env.AUTH_SERVER_URL,
    content: process.env.CONTENT_SERVER_URL
  }
}

在服务器上这很好,但是当 webpack 为客户端呈现时 process 是空的,这不起作用。

我希望有一种“查找和替换”的 webpack 插件可以单独用该文件中的内容替换它们?

"…config.js content…".replace(/process\.env\.([a-z0-9_]+)/, function(match, varName) {
  return process.env[varName];
})

最佳答案

请注意,按照接受的答案中的建议使用 DefinePlugin 可能是一项危险的操作,因为它会完全暴露 process.env。正如 Tobias 在上面评论的那样,实际上有一个插件 EnvironmentPlugin 通过添加白名单功能在内部使用 DefinePlugin 来完成此操作。

在你的 webpack.config.js 中:

{
  plugins: [
    new webpack.EnvironmentPlugin([
      'NODE_ENV',
      'WHITELISTED_ENVIRONMENT_VARIABLE'
    ])
  ]
}

关于javascript - 同构 JS 应用程序中的环境变量 : Webpack find & replace?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28717819/

相关文章:

javascript - 在 webpack 中加载 .otf 字体文件的正确方法是什么?

javascript - 为什么我的 javascript 没有迭代所有参数?

javascript - Webpack 包 4.41.2 安全问题,因为 terser-webpack-plugin 使用了 serialize-javascript 版本 1.9.1

javascript - 为什么 BrowserRouter 和 Route from 'react-router-dom' 无法正常工作?

javascript - 简单编辑器

angularjs - 将 ngResource 与 webpack 结合使用

reactjs - 生产环境打破了material-ui样式

javascript - 检查其中一个后检查单选按钮

php - 像在 PHP 中一样在 javascript 中获取函数参数

javascript - 使用数组reduce来减少对象数组的两个属性