Turbopack 为什么无法正确处理我的 HTML 入口文件?
我刚用 Turbopack 启动了一个简单的静态页面项目,但发现它好像不识别我的 HTML 入口文件,页面加载后是空白的,控制台也没报错。我试过把 HTML 放在 src 目录下,也试过根目录,都不行。
这是我的 HTML 文件内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Test</title>
</head>
<body>
<h1>Hello Turbopack!</h1>
<script type="module" src="./index.js"></script>
</body>
</html>
难道 Turbopack 不支持直接从 HTML 启动?还是我漏了什么配置?
Turbopack 目前根本不支持以 HTML 文件作为入口,它不是 Vite,设计思路完全不一样。Turbopack 是面向 Next.js 设计的,入口必须是 JavaScript/TypeScript 文件,它会从 JS 开始分析依赖图谱,HTML 只是最终输出的产物模板。
你现在这样写,Turbopack壓根不知道要从哪里开始编译,
index.js根本没被处理过,自然页面空白也没报错——因为啥都没跑起来。解决方案有两个思路。
第一个方案,如果你非要用 Turbopack,得换成 Next.js 的项目结构,或者用命令行指定 JS 入口:
然后在 JS 里手动操作 DOM,或者配合 HTML 模板插件使用。说实话挺麻烦的,而且 Turbopack 独立使用的文档还很不完善,坑多。
第二个方案,也是我更推荐的,如果你的项目就是简单的静态页面,直接换 Vite 吧。Vite 天生支持 HTML 入口,零配置就能跑:
把你的 HTML 和 JS 扔进去就能用,省得折腾。
Turbopack 现阶段还是更适合在 Next.js 13+ 项目里开箱即用,独立跑纯静态项目属实有点大材小用还不好使。等它成熟点再说吧,毕竟还在 canary 阶段,别拿生产项目当小白鼠。