当前位置: 代码网 > it编程>编程语言>Javascript > ts-node 报错 ERR_UNKNOWN_FILE_EXTENSION

ts-node 报错 ERR_UNKNOWN_FILE_EXTENSION

2024年08月01日 Javascript 我要评论
解决 ts-node 报错 ERR_UNKNOWN_FILE_EXTENSION。

发生背景

项目里想用 ts-node 跑个脚本,执行:

$ npm install -g ts-node
$ ts-node ./scripts/html-gen.ts

代码是 typescript + es module (真香),于是 ts-node 开始抱怨:

typeerror [err_unknown_file_extension]: unknown file extension ".ts" for ...\scripts\html-gen.ts
    at new nodeerror (node:internal/errors:399:5)
    at object.getfileprotocolmoduleformat [as file:] (node:internal/modules/esm/get_format:79:11)
    at defaultgetformat (node:internal/modules/esm/get_format:121:38)
    at defaultload (node:internal/modules/esm/load:81:20)
    at nextload (node:internal/modules/esm/loader:163:28)
    at esmloader.load (node:internal/modules/esm/loader:605:26)
    at esmloader.moduleprovider (node:internal/modules/esm/loader:457:22)
    at new modulejob (node:internal/modules/esm/module_job:64:26)
    at esmloader.#createmodulejob (node:internal/modules/esm/loader:480:17)
    at esmloader.getmodulejob (node:internal/modules/esm/loader:434:34) {
  code: 'err_unknown_file_extension'
}

解决方案

tsconfig.json 中添加 "ts-node": { "esm": true } 即可。

@@ -4,5 +4,8 @@
     "outdir": "dist",
     "isolatedmodules": true
   },
-  "include": ["src/**/*.ts", "components/**/*.vue", "scripts/*.ts"]
+  "include": ["src/**/*.ts", "components/**/*.vue", "scripts/*.ts"],
+  "ts-node": {
+    "esm": true
+  }
 }

(如果还报错,请参考这篇文章

发生原因

ts-node 默认将文件视为 commonjs ,需要显式声明为 es module 。(个人理解)

参考资料

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com