Next.js 构建不使用 .env.development

Her*_*usz 7 build next.js

我想为 next.js 应用程序设置两个不同的版本。

包.json:

...
"scripts": {
  "dev": "next dev",
  "debug": "cross-env NODE_OPTIONS='--inspect' next dev",
  "build:dev": "set NODE_ENV=development && next build",
  "build:prod": "set NODE_ENV=production && next build",
  "start": "node server.js"
},
"dependencies": {
  "bootstrap": "^5.0.0-beta3",
  "lodash": "^4.17.21",
  "next": "^10.0.0",
  "react": "17.0.1",
  "react-dom": "17.0.1",
  "react-scrollspy": "^3.4.3",
  "sass": "^1.32.11"
},
"devDependencies": {
   "cross-env": "^7.0.3"
}
...
Run Code Online (Sandbox Code Playgroud)

然后我创建.env.development.env.production使用不同的主机名和端口,如下所示:

HOST=127.0.0.3
PORT=9999
API_DOMAIN=http://$HOST:$PORT/API
Run Code Online (Sandbox Code Playgroud)

但如果我运行npm run build:dev它会显示以下内容:

$ npm run build:dev

> learn-starter@0.1.0 build:dev
> set NODE_ENV=development && next build

warn  - You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env
info  - Loaded env from W:\web\projects\xfb\xfbweb\react\.env.production
info  - Using webpack 4. Reason: future.webpack5 option not enabled https://nextjs.org/docs/messages/webpack5
info  - Checking validity of types...
info  - Creating an optimized production build...
info  - Compiled successfully
info  - Collecting page data...
FetchError: request to http://127.0.0.3:9999/API/GET/blog/?mode_cd=summary&offset=1&limit=2&language_cd=eng failed, reason: connect ECONNREFUSED 127.0.0.3:9999
...
Run Code Online (Sandbox Code Playgroud)

看来这使用了.env.production. 在这种情况下我怎样才能强制使用它.env.development
顺便说一句,如果我运行npm run build:prod它也使用.env.production.
我尝试更新到 v12.1.0 但仍然做同样的事情。

小智 3

我们使用 Docker 容器,因此为了开发,我们必须将文件复制.env.development到dockerfile 中的命令.env.production之前npm run build。这是我们解决这个问题的唯一方法。