导入不适用于Node.js版本11.8.0

Mil*_*Zew 3 javascript import node.js ecmascript-6

我正在编写一个简单的程序,该程序使用充满字典单词的对象。我想从另一个文件中导入该对象,因为它很大。尝试导入它时,我收到一个错误,看起来像Node.js不知道它是什么。

我已经尝试过重新安装最新版本的Node.js。

这是重要的代码:

import {dict} from './words_dictionary'
Run Code Online (Sandbox Code Playgroud)

这就是全部:

import {dict} from './words_dictionary'


function exists(obj,str) {
  if(obj[str]) {
    return true
  } else {
    return false
  }
}
console.log(exists(dict, 'hello'))
Run Code Online (Sandbox Code Playgroud)

这是字典代码的要点:

export let dict = {a: 1, aa: 1, aaa: 1, aah: 1, aahed: 1, aahing: 1, aahs:
1, aal: 1, aalii: 1, aaliis: 1, aals: 1, aam: 1, aani: 1, aardvark: 1,
aardvarks: 1,...~3000 more}
Run Code Online (Sandbox Code Playgroud)

我原以为是,但是我得到了这个错误:

SyntaxError: Unexpected token {
at new Script (vm.js:84:7)
at createScript (vm.js:264:10)
at Object.runInThisContext (vm.js:312:10)
at Module._compile (internal/modules/cjs/loader.js:696:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:747:10)
at Module.load (internal/modules/cjs/loader.js:628:32)
at tryModuleLoad (internal/modules/cjs/loader.js:568:12)
at Function.Module._load (internal/modules/cjs/loader.js:560:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:801:12)
at executeUserCode (internal/bootstrap/node.js:526:15)
Run Code Online (Sandbox Code Playgroud)

ECMAScript 6现在可以使用,但是我现在收到未定义dict的错误。因为我已经多次检查拼写错误,这可能与文件大小有关吗?

jar*_*ski 6

您是否能够import在代码中的其他地方使用键盘?这里的问题可能是您没有将代码移植到ECMAScript 5中。由于import是ECMAScript 6功能,因此Node.js尚未完全支持它。如果使用Babel之类的工具来转换代码,则可以解决此问题。如果您不想这样做,请尝试使用require

如前所述,在Node.js 9+中,您也可以在--experimental-modules启用了该标志的.mjs文件中使用它。

node --experimental-modules file.mjs
Run Code Online (Sandbox Code Playgroud)

Node.js import兼容性