这些是构建失败时 React2Static 能自己认出来的原因。下面每一条贴的都是 npm、Vite 或 tsc 实际打出来的原文,你可以直接拿手上那行去搜——也可以把项目传进工作台,它会告诉你撞上的是哪一条。
下面示例里的包名、路径和数值都只是举例,工作台填进去的是你自己项目里的那个。
你看到的是
error during build:
[vite]: Rollup failed to resolve import "react-router-dom" from "/home/project/src/App.tsx".
This is most likely unintended because it can break your application at runtime.代码里 import 了 react-router-dom,但 package.json 里没有它,所以从来就没装上。把它加进 dependencies,或者删掉那行 import。这是 AI 生成的项目里最常见的失败:写代码那台机器上早就装过,所以本地能跑。
改成
npm install react-router-dom你看到的是
npm error Missing script: "build"
npm error
npm error To see a list of scripts, run:
npm error npm run我们执行的是 npm run build,而这个项目没有 build 脚本可跑。补一条即可——Vite 项目就是 "build": "vite build"。
改成
{
"scripts": {
"build": "vite build"
}
}你看到的是
src/components/PostCard.tsx:12:23 - error TS2339: Property 'title' does not exist on type 'Post'.
12 <h2>{post.title}</h2>
~~~~~构建脚本在打包前先跑了 tsc,类型检查失败了。改掉日志里指出的那个文件,或者把构建脚本改成只打包——把 "tsc && vite build" 换成 "vite build"。
改成
{
"scripts": {
"build": "vite build"
}
}你看到的是
> [email protected] build
> vite build
sh: 1: vite: not found构建脚本调用了 vite,但 package.json 里没有它,所以它从来没被装上。把它加进 devDependencies。
改成
npm install -D vite你看到的是
npm error code ERESOLVE
npm error ERESOLVE unable to resolve dependency tree
npm error
npm error While resolving: [email protected]
npm error Found: [email protected]两个包要求同一个依赖的不同版本,装不到一起。我们已经自动用 --legacy-peer-deps 重试过一次,还是失败,需要手动把 package.json 里冲突的版本号对齐。
你看到的是
npm error code E404
npm error 404 Not Found - GET https://registry.npmjs.org/@shadcn%2fui-toast
npm error 404 '@shadcn/ui-toast@^1.0.0' is not in this registry.npm 在 registry 里找不到它。AI 有时候会编出不存在的包名,私有包在这里也访问不到。检查 package.json 里的拼写,或者如果没人 import 它,直接删掉这条依赖。
你看到的是
npm error code ETARGET
npm error notarget No matching version found for react@^19.9.0.包本身是有的,但你写的这个版本范围没有发布过。把 package.json 里的版本号放宽,或者改成一个确实发布过的版本。
你看到的是
vite v5.4.10 building for production...
✓ 41 modules transformed.
✓ built in 1.24s构建过程本身没报错,但没有东西可收。我们会去 dist/、build/、out/ 三个地方找——确认一下你的构建配置输出到哪个目录。
你看到的是
▲ Next.js 14.2.5
✓ Compiled successfully
✓ Generating static pages (5/5)
Route (app) Size First Load JSnext build 默认产出的是跑在服务器上的应用,放在 .next/ 里。在 next.config.js 加上 output: "export" 再构建一次,产物会写到 out/,我们就能收到了。注意 API 路由、server actions、图片优化这些服务端能力导出后不再可用。
改成
// next.config.js
module.exports = {
output: 'export',
}你看到的是
<--- Last few GCs --->
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory浏览器里的构建只有有限的内存,这个项目超了。删掉用不上的依赖和过大的素材通常能压回来;实在不行,这个项目只能在你自己电脑上构建。
你看到的是
npm error code EUNSUPPORTEDPROTOCOL
npm error Unsupported URL Type "workspace:": workspace:*package.json 里用了 workspace: 依赖,这种写法只有在完整仓库里才解析得了。请只上传这个应用本身,并把 workspace: 换成真实的版本号。
你看到的是
npm warn EBADENGINE Unsupported engine {
npm warn EBADENGINE package: '[email protected]',
npm warn EBADENGINE required: { node: '>=22.0.0' },
npm warn EBADENGINE current: { node: 'v20.11.1' }
npm warn EBADENGINE }某个依赖声明了这个环境提供不了的 Node 版本。放宽 engines 字段,或者换一个支持当前 Node 的版本。
你看到的是
npm error code EAI_AGAIN
npm error network request to https://registry.npmjs.org/react failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org下载中途断了。这种情况一般是临时的,重试一次就好。在 registry.npmjs.org 被墙的地区需要挂代理。