Node.js 中使用 import / export

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zwkkkk1/article/details/81564971

  因为一些历史原因,虽然 Node.js 已经实现了 99% 的 ES6 新特性,不过截止 2018.8.10How To Enable ES6 Imports in Node.JS 仍然是老大难问题

  下面我来介绍两种方法可以让我们在 Node.js 中使用 import/export

借助 Babel

1.下载必须的包

npm install babel-register babel-preset-env --D

2. 修改你的 server.js

下面是一个 server.js 的例子:

const Koa = require('koa')
const app = new Koa()

app.listen(3000, console.log("application is start at port 3000"))

import 替换 require

import Koa from 'koa'
const app = new Koa()

app.listen(3000, console.log("application is start at port 3000"))

如果你现在用 node server.js 跑这个文件,你会收到像这样的错误提示:

/Users/zyf/myStudy/demo/chatroom/server/app.js:1
(function (exports, require, module, __filename, __dirname) { import Koa from 'koa'
                                                                     ^^^

SyntaxError: Unexpected identifier

下面让我们用 babel 来解决这个问题

3.新增一个 start.js 文件

这个文件将成为我们的入口文件,里面是一些 babel 的代码

require('babel-register') ({
    presets: [ 'env' ]
})

module.exports = require('./server.js')

注意,接下来不是 node server.js,而是用 node start.js 来启动这个文件

来自 Node.js 官方的力量

Node 9提供了一个尚处于 Experimental 阶段的模块,让我们可以抛弃 babel 等一类工具的束缚,直接在 Node 环境下使用 import/export

官方手册:ECMAScript Modules
一个不错的教程:Node 9下import/export的丝般顺滑使用
有兴趣的可以去了解一下,嫌字多的可以继续往下看看我总结的使用方法

用前须知

  • Node 版本需在 9.0 及以上
  • 不加 loader 时候,使用 import/export 的文件后缀名必须为 .mjs

举个栗子

还是用上面的例子,请将代码回退到 Babel 中第一步的样子

1.改写 server.js

import Koa from 'koa'
const app = new Koa()

app.listen(3000, console.log("application is start at port 3000"))

和前面一样,不过将文件名改一下,从 server.js 改为 server.mjs

2.启动文件

执行下面代码,来启动文件

node --experimental-modules ./server.mjs

注意这是引用 koa 第三方模块不用做其他变化,如果要 import 自己的文件,那么那个待引入的文件也要改后缀。

比如

import example from './example'

那么原来应该是 example.js 要改为 example.mjs

目前这个模块还处于实验阶段,还是不要放到生产环境,自己拿出来玩玩还是可以的,

猜你喜欢

转载自blog.csdn.net/zwkkkk1/article/details/81564971