Pri*_*aly 4 javascript amazon-web-services aws-codebuild next.js
我有一个 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)
Run Code Online (Sandbox Code Playgroud)
这似乎是 Next.js 代码库本身的错误。
我自己的代码在任何地方都没有引用“标题”。
还有其他人遇到过这个问题吗?有人可以提出任何解决方案吗?
可能有用的信息
我的 package.json NPM 构建脚本是:
"build": "NEXT_PUBLIC_VERSION=$npm_package_version NEXT_PUBLIC_DATE=$(date +%s) next build",
Run Code Online (Sandbox Code Playgroud)
我的 buildspec.yml 文件是:
version: 0.2
phases:
pre_build:
commands:
- npm install
build:
commands:
- npm run build
artifacts:
files:
- '**/*'
base-directory: build
Run Code Online (Sandbox Code Playgroud)
我的 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;
Run Code Online (Sandbox Code Playgroud)
笔记:
当成功使用 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",
Run Code Online (Sandbox Code Playgroud)
但升级指南告诉我将其移至 next.config.js:
output: 'export',
distDir: 'build',
Run Code Online (Sandbox Code Playgroud)
NextJs 14 需要 Node >=18.17,这在标准 Amazon Linux 2 构建映像中不可用。您需要配置构建设置以使用 Amazon Linux 2023 构建映像,并将 NodeJs 版本覆盖为 >= 18.17。这就是我工作的方式。
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |