在Babel和Node中导入共享脚本时出现问题

时间:2018-06-28 11:54:30

标签: import export babel commonjs transpiler

我有一个javascript模块,需要将其导入两个不同的代码库中:

  • nodejs(8.11.3及更高版本未使用babel进行转译)
  • vuejs 2.5.16(由webpack捆绑并由babel移植)

我在以两种代码库均可导入文件的方式导出文件时遇到问题。

如果我尝试使用commonJS这样导出它:

module.exports = myFunc

Babel抱怨Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'

如果我尝试使用commonJS这样导出它:

exports = myFunc

Babel抱怨Uncaught ReferenceError: exports is not defined

如果我尝试使用es2015导出语法将其导出,如下所示:

export default myFunc

Nodejs会抱怨:

export default reduce;
^^^^^^

SyntaxError: Unexpected token export

不幸的是,编译完整的nodejs complete并不是一个选择。我希望可以通过调整webpack或添加扩展名等来解决此问题。

复制/所有代码:

  • 此仓库位于https://github.com/askmike/gekko.git(分支机构v0.6之前)
  • 我要在vue和nodejs之间共享的模块是here
  • 启动nodejs env:npm install && cd web && node server
  • 启动vue env:cd web/vue && npm install && npm run serve

1 个答案:

答案 0 :(得分:0)

您已经提到 Node 8.11.3 未使用babel进行转译,所以我认为我们不能使用 babel-node 来使用 import export合并软件包语句。

您可以通过 commonJS 方式使用

const reduce = require('reduce');