先上参考:
Node.js Setup With Typescript, Nodemon and
ESM.Can’t run my Node.js Typescript project TypeError
[ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension “.ts” for
/app/src/App.tsNode.js 如何处理 ES6 模块 应用环境
在node.js项目中一般推荐使用commonjs进行开发,但是有的时候我们可能需要引入外部的ES模块。由于commonjs和esm对export和import/require的用法不同,会导致应用编译报错。
解决方案 1.修改扩展名将ES6模块的文件的扩展名改成.mjs。Node.js 遇到.mjs文件,就认为它是 ES6 模块,默认启用严格模式,不必在每个模块文件顶部指定"use strict"。
2、使用node的实验特性tsconfig.json
{"module": "ESNext","moduleResolution": "node"}
package.json
{"type": "module"}
注意安装ts-node插件,为了解析ts文件。
node启动:
node --loader ts-node/esm --experimental-specifier-resolution=node ./export-func/index.ts
nodemon启动:
nodemon --watch '.*.ts' --exec 'node --experimental-specifier-resolution=node --loader ts-node/esm' ./export-func/index.ts