Tiven

Tiven

博观而约取,厚积而薄发

天问的个人网站(天问博客),专注于Node.js、Vue.js、React、Vite、Npm、Nginx等大前端技术。不断学习新技术,记录日常开发问题,持续分享coding,极客开源,共同进步。生命不息,奋斗不止... [ hexo blog ]

parcel报错Error: Expected content key de1e4a02ec63c4eb to exist


使用 Parcel 编译运行 TypeScript 出现报错:Error: Expected content key de1e4a02ec63c4eb to exist

Parcel TypeScript

一、使用场景

在页面上直接以 <script src="./index.ts" ></script> 的形式导入 TS 文件,可以正常运行。 但是,如果在 index.ts 中用 import 的形式又导入了其他 TS ,则会出现上边的报错。

  • 目录结构
.parcel-cache/
dist/
01.ts
02.ts
index.ts
index.html
package.json
tsconfig.json
  • index.ts
import './01.ts'
import './02.ts'
  • index.html
<!DOCTYPE html>
<html lang='zh'>
<head>
  <meta charset='UTF-8'>
  <title>TS 测试入口</title>
</head>
<body>

<script src='index.ts'></script>
</body>
</html>
  • 运行
parcel index.html

将会得到上述错误。

二、问题原因

  1. 由于 parcel 运行后会生成缓存文件,也就是上边出现的 .parcel-cachedist 目录,会影响浏览器运行。
  2. index.ts 中使用了 import 语法,浏览器默认是不支持的。

三、问题解决

  1. 删除 .parcel-cachedist 目录
  2. 修改 index.htmlindex.ts 的导入模式,增加 type='module' 属性,让浏览器识别 import 语法
<script src='index.ts' type='module'></script>

欢迎访问:天问博客