nodejs的导入导出模块太蛋疼了,今天试试esm规范的导入导出
直接使用import xxx from xxx的语法会报错,因为这是commonjs规范的语法
提示说将type属性改成module,或者使用.mjs后缀,这两种方法都可以
改package.json:
{
"name": "nodejs",
"type": "module" // 新增type属性,值为module
...
}
下面介绍一下导入导出代码:
// name.js
const name = 'sunzehui'
export {
name
}
// main.js
import {name} from './name.js'
console.log(name) // output: sunzehui
导出函数:
function sayHi() {
console.log("Hi")
}
export {
sayHi
}
import {sayHi} from './name.js'
sayHi() // output: Hi
异步导入:
const {sayHi} = await import('./name.js')
sayHi()
注意事项
commonjs规范中的特性在esm规范中已经用不了了
例如:
console.log(require)
console.log(module.exports)
console.log(exports)
console.log(__dirname)
console.log(__filename)
// output :
// xxx is not defind