小编典典

使用babel从node_modules导入模块但失败

reactjs

我用es6编写了一个模块,然后发布到npm,我想在另一个项目中使用它,所以我这样输入:

import {ActionButton} from 'rcomponents'

但这没有用:

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)

这是我在webpack中的js加载器配置:

{ test: /\.jsx?$/, loader: `babel?cacheDirectory=${babelCache}` }

当我尝试导入非的模块时node_modules,babel效果很好。但是从导入模块node_modules,babel似乎不起作用?


阅读 658

收藏
2020-07-22

共1个答案

小编典典

请参阅babel文档

注意:默认情况下,对node_modules的所有要求都将被忽略。您可以通过传递忽略正则表达式来覆盖它。

通常期望的是,其中的模块node_modules已经提前进行了转译,因此Babel不会对其进行处理。如果您不打算这样做,则需要告诉它可以处理哪些文件。ignore允许。

require("babel/register")({
    // Ignore everything in node_modules except node_modules/rcomponents.
    ignore: /node_modules\/(?!rcomponents)/
});
2020-07-22