Node.js项目如何使用ESModule
参考文章
先上参考:
- 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.ts - Node.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