从带有babel的node_modules导入模块但失败了

Leo*_*Gao 17 reactjs babeljs

我用es6写了一个模块并发布到npm,我想在另一个项目中使用它,所以我输入如下:

import {ActionButton} from 'rcomponents'
Run Code Online (Sandbox Code Playgroud)

但它不起作用:

D:\github\blog\node_modules\rcomponents\src\actionButton.jsx:1
(function (exports, require, module, __filename, __dirname) { import React fro
                                                              ^^^^^^
SyntaxError: Unexpected reserved word
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Module._extensions..js (module.js:478:10)
    at Object.require.extensions.(anonymous function) [as .jsx] (D:\github\blog\
node_modules\babel\node_modules\babel-core\lib\api\register\node.js:214:7)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at D:\github\blog\node_modules\rcomponents\src\index.js:3:19
    at Object.<anonymous> (D:\github\blog\node_modules\rcomponents\src\index.js:
7:3)
Run Code Online (Sandbox Code Playgroud)

这是我在webpack中的js loader配置:

{ test: /\.jsx?$/, loader: `babel?cacheDirectory=${babelCache}` }
Run Code Online (Sandbox Code Playgroud)

当我尝试导入一个不是来自的模块时node_modules,babel工作得很好.但是导入一个模块node_modules,babel似乎不起作用?

log*_*yth 24

巴贝尔文档:

注意:默认情况下,将忽略node_modules的所有要求.您可以通过传递ignore regex来覆盖它.

一般来说,期望是模块node_modules已经提前编译过,所以它们不会被Babel处理.如果你不这样做,那么你需要告诉它它可以处理哪些文件.ignore允许这样做.

require("babel/register")({
    // Ignore everything in node_modules except node_modules/rcomponents.
    ignore: /node_modules\/(?!rcomponents)/
});
Run Code Online (Sandbox Code Playgroud)

  • 对于Babel 6来说,这不是一个合适的答案,我遇到了类似的情况,似乎无法找到从节点模块转换模块的任何方法.就像那些仍在寻找Babel 6解决方案的人的补遗一样. (11认同)
  • 如果你想对babel-node使用相同的方法,你可以做`babel-node -ignore'/ node_modules /(?!my_module1 | my_module2)'script.js` (2认同)

归档时间:

查看次数:

15146 次

最近记录:

8 年 前