当Markdown编辑器遇上TypeScript:一场“//@ts-nocheck”引发的血案

“技术宅”遇上了“哲学命题”

最近,我和青柠决定给叶绘WordPress主题前台投稿系统里加个 Markdown 编辑器,看中了优雅又轻量的 Vditor。满怀期待准备开搞,心想:“先直接跑个官方编译,能有什么问题呢?”

Webpack:不能跑。

当Markdown编辑器遇上TypeScript:一场“//@ts-nocheck”引发的血案

我:为啥?

Webpack:不告诉你~

我:???

当Markdown编辑器遇上TypeScript:一场“//@ts-nocheck”引发的血案

这时候的心情,真的有种“刚开盒子就爆炸”的魔幻体验——啥都没改,啥都没碰,就这样被迎头痛击了。这不叫开发,这叫被生活毒打。

Webpack 报错现场更离谱,甩下一句:

webpack 5.98.0 compiled with 3 errors in 32147 ms

错误日志

Node.js v22.14.0
PS C:\Users\19928\Downloads\vditor-3.10.9 (2)\vditor-3.10.9> npm start

> vditor@3.10.9 start
> webpack serve --config webpack.start.js

<i> [webpack-dev-server] [HPM] Proxy created: /api  -> http://localhost:8080
<i> [webpack-dev-server] [HPM] Proxy rewrite rule created: "^/api" ~> ""
<i> [webpack-dev-server] [HPM] Proxy created: /ld246  -> https://ld246.com
<i> [webpack-dev-server] [HPM] Proxy rewrite rule created: "^/ld246" ~> ""
<i> [webpack-dev-server] Project is running at:
<i> [webpack-dev-server] Loopback: http://localhost:9001/, http://[::1]:9001/
<i> [webpack-dev-server] On Your Network (IPv4): http://192.168.23.1:9001/
<i> [webpack-dev-server] Content not from webpack is served from 'C:\Users\19928\Downloads\vditor-3.10.9 (2)\vditor-3.10.9' directory
<i> [webpack-dev-middleware] wait until bundle finished: /
assets by path js/ 20.1 MiB 386 assets
assets by path ../../dist/ 34.1 KiB 110 assets
assets by path images/ 69.6 KiB
  assets by path images/emoji/*.png 52.9 KiB 16 assets
  + 3 assets
assets by path *.js 3.66 MiB
  asset comment.js 1.1 MiB [emitted] (name: comment.js)
  + 3 assets
assets by path ./*.html 19.9 KiB
  asset ./render.html 6.73 KiB [emitted]
  + 3 assets
assets by path css/content-theme/*.css 12.9 KiB
  asset css/content-theme/ant-design.css 4.77 KiB [emitted] [from: src/css/content-theme/ant-design.css] [copied]
  + 3 assets
asset types/index.d.ts 26.1 KiB [emitted] [from: types/index.d.ts] [copied]
runtime modules 110 KiB 52 modules
modules by path ./src/ 644 KiB
  modules by path ./src/ts/ 575 KiB 108 modules
  modules by path ./src/*.ts 24.8 KiB 2 modules
  modules by path ./src/assets/less/*.less 44.6 KiB 2 modules
modules by path ./node_modules/ 193 KiB
  modules by path ./node_modules/webpack-dev-server/client/ 86.9 KiB 8 modules
  modules by path ./node_modules/webpack/hot/*.js 5.2 KiB 4 modules
  + 5 modules
modules by path ./demo/*.js 15.1 KiB
  ./demo/index.js 2.9 KiB [built] [code generated]
  ./demo/render.js 2.77 KiB [built] [code generated]
  ./demo/jest-puppeteer.js 4.6 KiB [built] [code generated]
  ./demo/comment.js 4.83 KiB [built] [code generated]

ERROR in C:\Users\19928\Downloads\vditor-3.10.9 (2)\vditor-3.10.9\src\ts\undo\index.ts
./src/ts/undo/index.ts 20:17-48
[tsl] ERROR in C:\Users\19928\Downloads\vditor-3.10.9 (2)\vditor-3.10.9\src\ts\undo\index.ts(20,18)
      TS2749: 'DiffMatchPatch.diff_match_patch' refers to a value, but is being used as a type here. Did you mean 'typeof DiffMatchPatch.diff_match_patch'?
 @ ./src/index.ts 42:0-39 473:31-35
 @ ./demo/comment.js 1:0-34 94:20-26

ERROR in C:\Users\19928\Downloads\vditor-3.10.9 (2)\vditor-3.10.9\src\ts\undo\index.ts
./src/ts/undo/index.ts 139:35-40
[tsl] ERROR in C:\Users\19928\Downloads\vditor-3.10.9 (2)\vditor-3.10.9\src\ts\undo\index.ts(139,36)
      TS7006: Parameter 'patch' implicitly has an 'any' type.
 @ ./src/index.ts 42:0-39 473:31-35
 @ ./demo/comment.js 1:0-34 94:20-26

ERROR in C:\Users\19928\Downloads\vditor-3.10.9 (2)\vditor-3.10.9\src\ts\undo\index.ts
./src/ts/undo/index.ts 140:37-41
[tsl] ERROR in C:\Users\19928\Downloads\vditor-3.10.9 (2)\vditor-3.10.9\src\ts\undo\index.ts(140,38)
      TS7006: Parameter 'diff' implicitly has an 'any' type.
 @ ./src/index.ts 42:0-39 473:31-35
 @ ./demo/comment.js 1:0-34 94:20-26

3 errors have detailed information that is not shown.
Use 'stats.errorDetails: true' resp. '--stats-error-details' to show it.

webpack 5.98.0 compiled with 3 errors in 32147 ms

当Markdown编辑器遇上TypeScript:一场“//@ts-nocheck”引发的血案

然后它就 它就……沉默了! 脑()

当Markdown编辑器遇上TypeScript:一场“//@ts-nocheck”引发的血案
  • 没有错误堆栈
  • 没有错误行号
  • 没有任何友情提示
当Markdown编辑器遇上TypeScript:一场“//@ts-nocheck”引发的血案

好家伙,你这报错风格挺抽象派的啊,毕加索看了都直摇头。

不得已,只能手动翻源码,百度了一圈儿说是 CDN 问题,我想想也不像。再求助 AI 和 GitHub,这才发现罪魁祸首:

vditor-3.10.9\src\ts\undo\index.ts
当Markdown编辑器遇上TypeScript:一场“//@ts-nocheck”引发的血案

原来作者当年为了图省事,写 TypeScript 时偷懒没加 //@ts-nocheck。结果编译器较真了,一看到错误就坚决不走了,这就有点“你不开口,我就死给你看”的架势。

当Markdown编辑器遇上TypeScript:一场“//@ts-nocheck”引发的血案

我默默给文件开头补了一句:

//@ts-nocheck

世界顿时和平了。Webpack 满意地继续编译,我的内心也终于从“绝望”变成了“将就用着吧”。

当Markdown编辑器遇上TypeScript:一场“//@ts-nocheck”引发的血案

注:
//@ts-nocheck 虽然不是治本的办法,但作为临时救急,它的作用真的有种“闭嘴符咒”的味道。以后有空(真的有空吗?)再慢慢把类型修好吧。

希望记录这次“优雅与崩溃并存”的开发经历,能给后来人减少踩坑的几率,或者至少,能提前让大家做好“被命运暴击”的心理准备。

当Markdown编辑器遇上TypeScript:一场“//@ts-nocheck”引发的血案

给TA给糖
共{{data.count}}人
人已给糖
站长笔记

记录一下给公司配电脑的体验:从“红米战士”到“装机大师”

2025-3-19 18:52:17

平面设计

如何用PS搞出一个毛玻璃效果

2024-9-11 0:14:54

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧

嗨朋友!
春节就在眼前,你准备好了嘛!!!
新的篇章即将开启,一起迎接更多的可能性吧!
加入我们