【问题标题】:Rails webpacker for some reason always think NODE_ENV is production despite I use `webpack-dev-server` and set NODE_ENV to developmentRails webpacker 出于某种原因总是认为 NODE_ENV 是生产环境,尽管我使用了 webpack-dev-server 并将 NODE_ENV 设置为开发环境
【发布时间】:2018-06-04 21:29:19
【问题描述】:

作为标题,我使用的是 docker ruby​​ 2.3.5 (ubuntu) 环境,尽管我已经设置了 NODE_ENV=development,但当我尝试截取 process.env.NODE_ENV 的值时,我仍然看到生产,但我找不到它被覆盖的任何地方。只发生在docker环境,我的MacOS没有,不知道是什么原因?

更新:这里是 Dockerfile 和 docker-compose.yml 供参考: https://gist.github.com/goodwill/b4e677ccf8fe0079183adeec35218812

更新:这是我在运行 webpacker-dev-server 时遇到的错误:

04:08:37 webpacker.1 | /app/config/webpack/development.js:20
04:08:37 webpacker.1 |     https: settings.dev_server.https,
04:08:37 webpacker.1 |                               ^
04:08:37 webpacker.1 | 
04:08:37 webpacker.1 | TypeError: Cannot read property 'https' of undefined
04:08:37 webpacker.1 |     at Object.<anonymous> (/app/config/webpack/development.js:20:31)
04:08:37 webpacker.1 |     at Module._compile (module.js:570:32)
04:08:37 webpacker.1 |     at Object.Module._extensions..js (module.js:579:10)
04:08:37 webpacker.1 |     at Module.load (module.js:487:32)
04:08:37 webpacker.1 |     at tryModuleLoad (module.js:446:12)
04:08:37 webpacker.1 |     at Function.Module._load (module.js:438:3)
04:08:37 webpacker.1 |     at Module.require (module.js:497:17)
04:08:37 webpacker.1 |     at require (internal/module.js:20:19)
04:08:37 webpacker.1 |     at requireConfig (/app/node_modules/webpack/bin/convert-argv.js:97:18)
04:08:37 webpacker.1 |     at /app/node_modules/webpack/bin/convert-argv.js:104:17

【问题讨论】:

  • 你确定你在 docker 中正确设置了 NODE_ENV 吗?
  • 能否请您发布更多关于您如何设置的详细信息?您是否可以提供 docker 图像或任何 gist 以重现该图像?
  • 在此处查看我的 docker 文件:gist.github.com/goodwill/b4e677ccf8fe0079183adeec35218812
  • 请注意我的 NODE_ENV=development 是在 .env.development 中设置的

标签: ruby-on-rails node.js ruby webpack


【解决方案1】:

Docker 容器不会从您的本地环境中收集环境变量。

在 Dockerfile 中设置环境变量。例如:

ENV NODE_ENV=development

或者,您可以从命令行使用该环境变量运行容器:

$ docker run -e NODE_ENV=devlopment mycontainer

【讨论】:

  • 是的,这已经完成了,但是当我尝试console.log(process.env.NODE_ENV) 时,它仍然显示production。在调用节点包之前的bin/webpacker-dev-server 内部(exec newenv, *cmdline,第 41 行,它仍然是development。奇怪的是,它只发生在容器内,当我在本地运行项目时,我没有这样的问题。
  • 作为一个非常极端的措施,尝试在 config/application.rb 中将此变量设置为常量
  • 我很确定它不会帮助贾斯汀-因为我做了一步一步的调试,问题并没有发生在 Rails 代码中,而是只有在调用节点部分时才会发生,超级奇怪。真正糟糕的部分是我的 Mac 上也不会发生这种情况:\
  • 尝试将 NODE_ENV=development 添加到您的 docker-compose.yml 和/或添加 RUN export NODE_ENV=development 做您的 Dockerfile。我没有在你的要点中看到任何一个。
  • 正如我已经说过的,它是在.env.development 中定义的,它已经在docker-compose.yml 中指定为环境源。
猜你喜欢
  • 2017-08-18
  • 2018-07-22
  • 2020-12-13
  • 2021-11-27
  • 2012-11-14
  • 1970-01-01
  • 2014-01-28
  • 2014-03-16
  • 2014-07-25
相关资源
最近更新 更多