关闭

在Node.js 12 中使用 ESM

时间: 2019-12-03阅读: 939标签: node

Node.js 12 之后开始支持 ECMAScript Modules(简称ESM),不过并不是默认开启或者自动切换。坦率地说我也卡了一阵子才搞清楚怎么直接使用。简单记一下吧。

首先,Node.js 12 里默认支持的仍是 CommonJS,如果直接按照 ESM 写,然后跑,会报错,错误信息里有个关键字:/cjs/loader.js,只要你看到它,可以肯定是没开启 ESM 支持,还在用 CommonJS 加载模块,所以失败。

想要开启 ESM

首先,(1) 你要使用 --experimental-modules 开启实验中的 ESM 支持。
然后,(2) 所有的 import 都要写完整的文件名,不能省略扩展名。
接下来,(3) 你有有两种模式可选(其实是三种,不过第三种对我来说不太会用到,所以先不管了)


1. 扩展名

所有 ESM 的 JS 使用 .mjs 扩展名,比如:



// a.mjs

import message from './b.mjs';



console.log(message);



// b.mjs

export default 'hello world';



接下来,执行:



node --experimental-modules a.mjs


Bash

注意,这里的 --experimental-modules 一定要放在文件名的前面。


2. 在当前目录放一个 package.json

里面要有一个根属性 "type": "module"。然后就可以直接运行了,这个比较方便,不过可能会影响老项目的兼容性。

注意:在当前版本 12.4.0,上面的 (1) (2) (3) 必须同时满足,缺一不可。

原文:https://blog.meathill.com/js/use-esm-in-node-js-12.html#more-3664


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/7142

关闭

基于node服务器的大文件(G级)上传

3G的大文件分1500个2M二进度文件,通post方法发送给node服务,服务器全部接收到文件后,进组装生成你上文件。

关于 Node.js 里 ES6 Modules 的一次更新说明

关于 Node.js 里 ES6 Modules 的一次更新说明,总结来说:CommonJS 与 ES6 Modules 之间的关键不同在于代码什么时候知道一个模块的结构和使用它。

用node探究http缓存

用node搞web服务和直接用tomcat、Apache做服务器不太一样, 很多工作都需要自己做。缓存策略也要自己选择,虽然有像koa-static,express.static这些东西可以用来管理静态资源,但是为了开发或配置时更加得心应手,知其所以然,有了解http缓存的必要。另外,http缓存作为一个前端优化的一个要点,也应该有所了解。

Node.js FS模块方法速查

所有文件操作提供同步和异步的两种方式,本笔记只记录异步的API,异步方式其最后一个参数是回调函数。回调函数的第一个参数往往是错误对象,如果没有发生参数,那么第一个参数可能是null或者undefinded。

快速理解 nodejs 模块

module.exports 用于暴露一个值,这个值默认是对象,也可以覆盖为原始值。尝试在一个文件中直接 log 出 module 的值,可以得到:你需要通过修改 module 的 exports 属性来输出你需要输出的东西,而 require 用于导入一个模块

node初步学习

Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。Node.js 几乎每一个 API 都是支持回调函数的

为什么要用 Node.js

传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎。前者负责渲染 HTML + CSS,后者则负责运行 JavaScript。Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快。

用node.js开发一个可交互的命令行应用

在这个教程中,我们会开发一个命令行应用,它可以接收一个 CSV 格式的用户信息文件,教程的内容大纲:“Hello,World”,处理命令行参数,运行时的用户输入,异步网络会话,美化控制台的输出,封装成 shell 命令,JavaScript 之外

什么是node repl?

Node REPL(Read Eval Print Loop)是Node自带的交互式解释器(又名Node shell),表示一个电脑的虚拟环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。

手写一个仿微信登录的Nodejs程序

用户打开登录网页后,登录网页后台根据微信OAuth2.0协议向微信开发平台请求授权登录,并传递事先在微信开发平台中审核通过的AppID和AppSecrect等参数;微信开发平台对AppID等参数进行验证,并向登录网页后台返回二维码;

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!