nodejs中 import 与 async

想要了解ES6模块化及其几个关键词的用法和区别可以看模块化标准【AMD】【CMD】【CommonJS】【ES6】以及 module.exports、exports、export、export default、require、import 间的理解概论
测试版本node v10.15.3

//async.js
;(async function a() {
  let res = await new Promise(function(resolve) {
    setTimeout(function() {
      resolve(2)
    }, 1000)
  })
  console.log(res)
})()
Administrator@DESKTOP-U41SHUG MINGW64 ~/Desktop/test
$ node async.js
2
//隔1秒输出了2,表明在v10.15.3中可以使用 async和await

默认支持async/await了
看了一下async/await的默认支持是从v7.6.0版本开始的,所以现在应该能放心使用


再测试一下import

//import.js

import { zs } from './cons'//导入js文件时不用加拓展名
console.log(zs)
//cons.js
let zs = {
  name: '张三'
}
export { zs }
$ node import//执行js文件也默认不需要加拓展名:.js

报错

所以这版本还是不支持import 和export/export default

想要使用就得用babel,babel的方法使用百度有好多这里就不写了


还有一种方法是使用官网的写法:
将执行的js文件拓展名变为 mjs
如现在将 import.js 改为 import.mjs
并在node命令中 加上 --experimental-modules指令
如下:

//import.mjs
import { zs } from './cons'
console.log(zs)
//cons.js
let zs = {
  name: '张三'
}
export { zs }
Administrator@DESKTOP-U41SHUG MINGW64 ~/Desktop/test
$ node --experimental-modules import        //mjs文件在执行指令中依旧不需要加后缀

报错了

报错了,原因是每个使用了 import/export的依赖文件和被执行文件名都需要把拓展名改为.mjs,而不是只是被执行的文件需要改mjs如下

//import.mjs
import { zs } from './cons'
console.log(zs)
//cons.mjs
let zs = {
  name: '张三'
}
export { zs }
Administrator@DESKTOP-U41SHUG MINGW64 ~/Desktop/test
$ node --experimental-modules import        //mjs文件在执行指令中依旧不需要加后缀
{ name: '张三' }

执行成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值