如何使用节点将我的ES6-export-default模块导入到命令行JavaScript程序中?

时间:2019-05-04 11:29:16

标签: javascript node.js es6-modules

我的mymodule.js中有一个ES6模块

export default function () {

  console.log('hello world');

}

在app.js内部,我导入了模块

import mymodule from 'mymodule'; //also tried './mymodule' and './mymodule.js'

mymodule();

从命令行执行

node app.js

node --experimental-modules app.js

错误消息

import mymodule from 'mymodule';
   ^^^^^^^^

SyntaxError: Unexpected identifier
at Module._compile (internal/modules/cjs/loader.js:703:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
at Module.load (internal/modules/cjs/loader.js:628:32)
at Function.Module._load (internal/modules/cjs/loader.js:555:12)
at internal/modules/esm/translators.js:84:15
at Object.meta.done (internal/modules/esm/create_dynamic_module.js:40:9)
at file:///home/a/code/marionette/test_area/app.js:9:13
at ModuleJob.run (internal/modules/esm/module_job.js:111:37)
at processTicksAndRejections (internal/process/task_queues.js:88:5)
at process.runNextTicks [as _tickCallback] (internal/process/task_queues.js:58:3)

版本

node --version                                                                                                                                  
v12.0.0

npm --version
6.9.0

其他

  • Linux
  • 使用nvm
  • 尽管我正在使用npm并具有package.json文件,但我不想使用babel或webpack或其他开发人员依赖项来使其正常工作。
  • 我很高兴使用实验性功能。

问题

使用节点和ES6,如何将ES6模块导入命令行JavaScript程序?

1 个答案:

答案 0 :(得分:0)

在Pointy发表评论之后,我进行了这些更改

  1. 将mymodule.js重命名为mymodule.mjs
  2. 已更改为导入到

    <option>Batarang</option

  3. 在package.json中添加了顶级字段

    <Batmobile>