【问题标题】:Next.js ignoring NODE_ENV=developmentNext.js 忽略 NODE_ENV=development
【发布时间】:2020-06-30 22:44:01
【问题描述】:

在我的package.json 中,我设置了一个build 脚本来构建我的下一个项目,如下所示:

"build": "echo \"$NODE_ENV\" && NODE_ENV=$NODE_ENV next build && npm run build-server",

我得到的命令的输出是:

> admin-ui@1.0.0 build /usr/src/admin-ui
> echo "$NODE_ENV" && NODE_ENV=$NODE_ENV next build && npm run build-server

development
Creating an optimized production build ...

echo 输出development 作为$NODE_ENV 的值。但是,我无法将其传递给下一个。它只是忽略它。

使用 next.js 版本9.0.5

【问题讨论】:

  • “我无法将其传递给下一个”是什么意思?您无法检测到下一个应用程序中的当前环境? (例如,在 _document.js 中)
  • @nico 接下来会忽略我的NODE_ENV 值。
  • 根据answer on a GitHub issue 建议使用APP_ENV。这听起来是一个不错的解决方案。

标签: next.js


【解决方案1】:

next build 生成 production 构建

next dev 创建一个开发版本 - https://nextjs.org/docs/api-reference/cli#development

Build 通常是用于生产构建的命名法,dev 用于开发服务器。

当您执行next build 时,它假定它正在为生产做准备并继续这样做。

【讨论】:

  • 这有点傻,我绝对相信它不应该忽略明确的设置。我正在构建一个 docker 映像,这就是为什么我需要先构建(prod 和 dev 具有相同的 Dockerfile)。
  • 请注意,NODE_ENV 在 Next.js 中的 special way 中使用。 (我找不到关于它的行为方式的可靠信息,但它确实具有特殊含义。)
猜你喜欢
  • 2019-02-18
  • 2018-03-26
  • 2019-12-15
  • 2019-01-18
  • 2020-12-13
  • 2019-04-15
  • 2021-04-18
  • 1970-01-01
  • 2013-10-29
相关资源
最近更新 更多