我有一个 Next.js 应用程序,多年来我一直使用 AWS codebuild 构建该应用程序,没有出现任何问题。
我最近将项目更新到 Next.js 14(从 13 开始),现在构建失败并出现以下错误:
unhandledRejection ReferenceError: Headers is not defined
at Object.<anonymous> (/codebuild/output/src3629032198/src/node_modules/next/dist/server/web/spec-extension/adapters/headers.js:32:30)
at Module._compile (node:internal/modules/cjs/loader:1198:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)
at Module.load (node:internal/modules/cjs/loader:1076:32)
at Function.Module._load (node:internal/modules/cjs/loader:911:12)
at Module.require (node:internal/modules/cjs/loader:1100:19)
at Module.mod.require (/codebuild/output/src3629032198/src/node_modules/next/dist/server/require-hook.js:64:28)
at require (node:internal/modules/cjs/helpers:119:18)
at Object.<anonymous> (/codebuild/output/src3629032198/src/node_modules/next/dist/server/api-utils/index.js:63:18)
at Module._compile (node:internal/modules/cjs/loader:1198:14)
这似乎是 Next.js 代码库本身的错误。
我自己的代码在任何地方都没有引用“标题”。
还有其他人遇到过这个问题吗?有人可以建议任何解决方案吗?
可能有用的信息
我的 package.json NPM 构建脚本是:
"build": "NEXT_PUBLIC_VERSION=$npm_package_version NEXT_PUBLIC_DATE=$(date +%s) next build",
我的 buildspec.yml 文件是:
version: 0.2
phases:
pre_build:
commands:
- npm install
build:
commands:
- npm run build
artifacts:
files:
- '**/*'
base-directory: build
我的 next.config.js 是:
const isLocal = process.env.NODE_ENV === 'development';
const nextConfig = {
trailingSlash: true,
// Build settings
output: 'export',
distDir: 'build',
// Handle SVG imports
webpack(config) {
config.module.rules.push({
test: /\.svg$/i,
issuer: /\.[jt]sx?$/,
use: '@svgr/webpack',
});
return config;
},
// SCSS options
sassOptions: {
logger: {
warn: function (message) {
console.warn(message);
},
debug: function (message) {
console.log(message);
},
},
},
// Define whether to remove console.log statements from the deployed code
compiler: {
removeConsole: isLocal ? false : true,
},
};
module.exports = nextConfig;
注:
成功使用 Next.js 13 时,我的构建脚本末尾包含“&& next export -o build”:
"build": "NEXT_PUBLIC_VERSION=$npm_package_version NEXT_PUBLIC_DATE=$(date +%s) next build && next export -o build",
但是升级指南告诉我将其移至 next.config.js:
output: 'export',
distDir: 'build',
当您尝试在本地计算机上创建构建时,它是否有效? 我面临同样的问题,但仅限于生产服务器