之前,为做一些NodeJS的一些相关测试,在 webstrom 工具写代码测试的时候,出现了一个问题,运行测试代码的时候,老是提示不支持 import 关键字。现象如下:
我创建了一个测试文件 assert.js
import assert from "assert";
assert(1 === 2);
- 1
- 2
直接在 webstrom 中运行,然后就出现以下错误:
"F:\Program Files\JetBrains\WebStorm 2017.2\bin\runnerw.exe" E:\hsl\java\software\nodejs\node.exe E:\hsl\web\nodeJs\js\assert.js
E:\hsl\web\nodeJs\js\assert.js:5
import assert from "assert";
^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:389:7)
at startup (bootstrap_node.js:149:9)
Process finished with exit code 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
为了解决这个问题,我在网上找了很多方法,都没有得到解决。后来在查 nodeJs 运行环境时,终于找到问题的根源了。
目前 NodeJs 只支持部分 ES6 的语法,有些 ES6 的语法还不支持,而 import 语法就是其中之一,web browser 也是一样,只支持部分语法。而要 NodeJs 全部支持 ES6 的语法,可能需要在今后新版本的 NodeJs 才可以。
解决这个问题,可以找一些目前使用的替代方案,比如使用 Babel-cli 插件,将 ES6 转换成 ES5,然后再使用。当然你也可以不使用 import 语法,而使用具有相同功能的 require 语法(非 ES6 语法)。