解决问题SyntaxError: Unexpected token import

ES6语法的模块导入导出(import/export)功能,咱们在使用它的时候,可能会报错:html

SyntaxError: Unexpected token import
语法错误:此处不该该出现import

SyntaxError: Unexpected token import

我遇到的状况是import语法不识别致使的。在这里,有两种方法能够解决。node

1: 使用node的v8及以后的版本

由于,node须要v8.x以后的版本才支持ECMAScript Modules 和 imort 语法 目前,node稳定版本是v8.11.2 能够使用nvm来安装管理查看多个node版本git

能够使用--experimental-modules实验模块标志来启用加载ECMAScript Modules的特性。 并且做为ES模块加载的文件名,必须以.mjs后缀结尾es6

node --experimental-modules my-app.mjs

此种方法,在输出的时候会提示:github

(node:16208) ExperimentalWarning: The ESM module loader is experimental.

表示是个实验模块,到时候可能会修改。 例子:https://github.com/weiqinl/demo/tree/master/01-es6-importnpm

2: 使用babel,通用方法

浏览器支持import

浏览器直接支持import程度比较低,因此须要babel来将import转换为es5语法。浏览器

安装

经过 npm:babel

npm install --save-dev babel-preset-env babel-cli

或者经过 yarn:app

yarn add babel-preset-env --dev

使用

没有选项的默认行为将运行全部transform(与 babel-preset-latest 相同)。 新建一个.babelrc文件,并在里面写入:es5

{
    "presets": ["env"]
}

执行

babel-node index.js

个人例子: https://github.com/weiqinl/demo/tree/master/01-es6-import babel官方给出的一个例子:https://github.com/babel/example-node-server

2018-10-18 更新

没法识别import,换一种想法,也能够说是低版本浏览器不支持。如今babel已经更新到版本7了,咱们用最新的babel来实现。 该问题的babel7的解决方案:https://www.cnblogs.com/weiqinl/p/9773048.html

参考: https://github.com/nodejs/help/issues/53

相关文章
相关标签/搜索