Babel ES6:导入需要在ES6中编译的节点模块

时间:2016-02-24 18:00:37

标签: node.js import ecmascript-6 babeljs

我正在正确导入节点模块但遇到了一个问题,我导入的节点模块是用es6编写的,而babel无法传输它。

在基类标题中:

import foo from 'bar/lib/foo';
节点模块中的foo.js中的

import Debug from 'debug';
export default class foo from bar {
    ...
    ...
    ...

}

错误讯息:

import Debug from 'debug';
^^^^^^

SyntaxError: Unexpected token import

正如您所看到的,它能够找到文件foo.js,但它没有在es6中运行节点模块。如何让Babel转换基本代码以及它试图导入的节点模块?

2 个答案:

答案 0 :(得分:1)

你有这个内容的文件.babelrc吗?

{
   "presets": ["es2015"],
   "plugins": []
}

您可以在此处查看示例:https://github.com/Talento90/ima-up

答案 1 :(得分:1)

节点模块应与源代码分开编译。如果您使用的是外部库,则应该有一个包含已转换代码的目录。如果您自己编写,则需要使用npm link并单独编译。

如果节点模块已经有一个已转换的目录(如dist),您可以尝试将已转换的代码导入节点模块:

import foo from 'bar/dist/foo';