当前位置: 首页 > 面试题库 >

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

印劲
2023-03-14
问题内容

我用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似乎不起作用?


问题答案:

请参阅babel文档:

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

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

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


 类似资料:
  • 问题内容: 尝试使用Webpack4和Babel7构建React应用时,我遇到以下错误。 ./src/index.js中的错误模块构建失败(来自./node_modules/babel-loader/lib/index.js):错误:无法从’/ Users / me / Desktop /找到模块’babel-preset-react’ reflask’-如果要解析“ react”,请使用“ mo

  • 在尝试用Webpack4和Babel7构建react应用程序时,我遇到了以下错误。 ./src/index.js模块生成失败(来自./node_modules/babel-loader/lib/index.js):错误:从“/users/me/desktop/refleask”中找不到模块“babel-preset-react”-如果要解析“react”,请使用“Module:react”-您是说

  • 问题内容: 我已尝试找到有关最佳使用还是全面的指南。我刚开始使用Python,并且正在尝试着眼于最佳实践。 基本上,我希望有人能分享他们的经验,其他开发人员有什么喜好,以及避免遇到麻烦的最佳方法是什么? 问题答案: 和之间的区别主要是主观的。选择最喜欢的一个,并在使用中保持一致。这里有一些要点可以帮助你做出决定。 优点: - 减少维护你的import报表。无需添加任何其他导入即可开始使用模块中的另

  • 问题内容: 我正在和Browserify一起工作。另外,我正在按节点模块系统使用ES6样式模块功能。 我想将所有自己的模块放入。 例如: 在 (将编译为) 之后,我使用以下命令将以上代码编译为: 但不幸的是,我遇到了一些错误: 目录结构: 但是,当自己的模块不在这样时: 然后,它工作正常。如何在in中使用ES6样式模块? 问题答案: 这就是Browserify转换的工作方式,转换仅在所引用的模块中

  • 我有一个这样的目录: 我可以这样导入父模块: 那么,既然我已经有了父模块,那么获取子模块的最佳方法是什么?我已经尝试了,,等。 有什么建议吗? 谢谢

  • 问题内容: 我应该使用 要么 当 导入模块 ,并和有 改变名字没有必要/愿望 ()? 有什么区别吗?有关系吗? 问题答案: 假设是中的模块或包,没有区别*,那就没关系。这两个语句具有完全相同的结果: 如果不是模块或软件包,则第二种形式将不起作用;引发回溯: *在Python 3.6及更高版本中,包含其他模块的软件包的初始化顺序存在一个错误,即在软件包 的加载阶段,在子模块中使用 该软件包 会失败,