“您可能需要一个额外的加载器来处理这些加载器的结果。”

2023-12-21

我目前正在尝试为 ReactJs 构建一个状态管理库。但是一旦我将它实现到我的 React 项目中(使用create-react-app),它开始丢弃此错误:

Failed to compile.

path/to/agile/dist/runtime.js 116:104
Module parse failed: Unexpected token (116:104)
File was processed with these loaders:
 * ./node_modules/babel-loader/lib/index.js
You may need an additional loader to handle the result of these loaders.
|       if (subscriptionContainer instanceof sub_1.CallbackContainer) subscriptionContainer.callback(); // If Component based subscription call the updateMethod which every framework has to define
|
>       if (subscriptionContainer instanceof sub_1.ComponentContainer) if (this.agileInstance.integration?.updateMethod) this.agileInstance.integration?.updateMethod(subscriptionContainer.component, Runtime.formatChangedPropKeys(subscriptionContainer));
|     }); // Log Job
|

如果我注释掉错误中提到的突出显示的代码行,它会跳转到另一点并在那里抱怨。但这不可能是语法错误,因为这样 TypeScript 也会在 IDE 中出现错误。

该工具的工作原理:一开始你必须定义一个框架,在本例中是 React。然后,您可以创建一个 State 并通过 Hook 将该 State 订阅到 React 功能组件。 用于将状态绑定到 React 组件的 Hook 只是创建一个触发重新渲染的回调(通过改变useReducer) 并将此回调分配给订阅的 State。

如果您想了解更多信息,请查看此存储库:https://github.com/agile-ts/agile https://github.com/agile-ts/agile

依赖项:

第三方状态管理库:

  "dependencies": {
    "@types/chai": "^4.2.12",
    "@types/mocha": "^8.0.2",
    "chai": "^4.2.0",
    "eslint-config-prettier": "^6.11.0",
    "mocha": "^8.1.1",
    "prettier": "2.0.5",
    "ts-node": "^8.10.2",
    "tsc-watch": "^4.1.0",
    "tslib": "^2.0.0",
    "typescript": "^3.9.7"
  }
  • Node: v14.8.0

反应项目:

"dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2",
    "@types/jest": "^24.0.0",
    "@types/node": "^12.0.0",
    "@types/react": "^16.9.0",
    "@types/react-dom": "^16.9.0",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-scripts": "3.4.3",
    "typescript": "~3.7.2",
    "agile-framework": "file:../../"
  },
  • React: 16.13.1
  • NPM: 6.14.7

问题是你正在将 ES2020 发送给dist/。如果你看一下它抱怨的那一行:

if (subscriptionContainer instanceof sub_1.ComponentContainer) if (this.agileInstance.integration?.updateMethod) this.agileInstance.integration?.updateMethod(subscriptionContainer.component, Runtime.formatChangedPropKeys(subscriptionContainer));
                                                                                              // ^^                                         // ^^

你可以看到它正在使用可选链接 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining发出的代码中的运算符。因此,您的库的使用者需要有适当的配置来处理此类代码。您的示例消费者 CRA 应用程序正在使用 Babel;虽然设置does具有可选链接的转换,它仅在 React 应用程序本身的源代码上运行,not它的依赖项(包括您的库)。

修复它的一种选择是发出较少的现代代码,这将减少消费者所需的配置量。例如,如果您使用以下设置来定位 ES6tsconfig.json:

{
    "target": "ES6",
    "lib": ["DOM", "ES6", "DOM.Iterable", "ScriptHost", "ES2016.Array.Include"],
    // ...
}

React 应用程序至少可以启动,而无需更改源代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“您可能需要一个额外的加载器来处理这些加载器的结果。” 的相关文章

随机推荐

  • 如何更改 Android 上浮动操作按钮 (FAB) 的形状?

    在我们的 Android 应用程序中 我们需要创建一个浮动操作按钮 它不是默认的圆形 而是带有三个圆角的正方形 该晶圆厂如下图所示 我设法创建了这样一个表单 但不知道如何将其应用到我的工厂 或者是否可能 形状的 xml 文件如下所示
  • Jenkins 中的 Gerrit-trigger 插件如何工作?

    我想了解 Jenkins 中的 gerrit trigger 是如何详细工作的 另外 如何调用触发条件的测试 Thanks gerrit 触发器的工作原理如下 它使用 ssh 连接到 gerrit 服务器并使用 gerrit stream
  • 按下按钮时在滚动区域中加载 QTableWidgets

    我有一个名为 test 的方法 它将 3 个单行表加载到滚动条中 然而 由于某种原因 我无法弄清楚 如果我只是在加载时激活 test 它就可以工作 但如果我将其注释掉 然后尝试通过按下按钮来激活它 它就不起作用 这是主模块 带有 test
  • 迭代 *args?

    我正在编写一个脚本 我需要接受多个参数 然后迭代它们以执行操作 我开始定义一个函数并使用 args 到目前为止 我有如下内容 def userInput ItemA ItemB args THIS ItemA THAT ItemB MORE
  • DocumentDb - 嵌套文档和根级别的查询

    提醒我 编辑 删除 变更类型 问题 您不能对自己的帖子进行投票 0 你好 假设我有以下方式的文档 id 123 tags name something 我想查询包含 name searched 标签或 id 9000 的所有文档 我在操场上
  • ajax中的非法调用错误(Jquery 1.7.1)

    我正在尝试使用 jquery 发布 ajax 请求 var peName document getElementById peName value var peSubName document getElementById peSubNam
  • 通过 Visual Studio 进行 C++ 调试 - 向量大小变化的观察点

    我想用我的向量探索这些变化 因此我想在向量大小上设置一个点 因此 Visual Studio 将让我在每次大小更改后查看向量中的内容 我怎样才能做到这一点 在此链接中 http www codeproject com Articles 35
  • C# 如何在 windows xp/7 中禁用屏幕键盘声音

    我有一个在 Windows XP 7 上运行的 C 应用程序 我使用屏幕键盘 启用声音时会出现延迟 从而导致问题 我想禁用声音 如何通过我的 C 应用程序代码禁用声音 有任何想法吗 您可以从注册表禁用它 HKEY CURRENT USER
  • Apache hive 错误 此版本的 hadoop 不支持合并凭据

    我使用的是hadoop 1 2 1 hbase 0 94 14和hive 1 0 0 我的集群中有三个数据节点 还有三个区域服务器 我必须将一些数据从 hbase 导入到 hive 我已经成功配置配置单元 但是当我运行命令计数 no 时 h
  • 从 Xcode 5 导入 SVN 中的项目

    在 xcode 4 管理器中有一个 导入 按钮 在 xcode5 中如何导入 svn 存储库中的项目 thanks 这个问题有点令人困惑 所以如果这不完全是您所需要的 请告知 否则 请随意接受答案 令人困惑的是 您描述的 Xcode 4 工
  • 哪个版本的 Maven 与 Java 6 兼容?

    我必须在一个需要 java 6 才能运行的旧项目中工作 因为其中引用了已在未来版本中删除的已折旧的 sun 类 作为该过程的一部分 我将系统路径中的 jdk 从 8 更改为指向 java 6 jdk 这样做之后我得到 Exception i
  • EaselJS - 拖动缩放父级的子级

    注意 此问题现已解决 请参阅下面我的回答中的 修复 如果您认为合适 请随意注入任何进一步的知识 首先 我一直在研究和谷歌搜索 localToGlobal localToLocal 和 globalToLocal 但我对这些方法的理解还不足以
  • 无法将地图放入接收器上下文中

    我正在尝试查看在接收器上下文中抛出地图的方法 在这段代码中 class Sunk has titanic method sink say Sinking titanic Sunk new titanic for 1 3 1 3 map Su
  • 返回时未调用 ngOnInit

    我注意到ngOnInit 当我返回到已经实例化的页面时 方法不会被调用 我必须使用其他方法吗 我需要一个每次访问特定页面时都会调用的方法 EDIT已经测试过onPageWillEnter 但它在 Ionic 2 中没有被触发 Check 生
  • PHP中的短语分割算法

    不知道如何解释 让我们举个例子 说我想拆分句子 今天是个好日子 into today today is today is a today is a great today is a great day is is a is a great
  • 如何将图像调色板缩小为特定颜色?

    我正在使用 Python 程序来创建十字绣方案 并且需要将图像中的颜色减少为特定的牙线颜色像这样 http www dmc usa com Products Needlework Threads Embroidery Threads med
  • javascript方法链中的输入参数是如何填充的?

    我正在尝试真正了解 javascript 工作原理的细节 在方法链接期间 有时一个方法会返回到另一个具有命名输入参数的方法 例如 在 D3 中 模式如下所示 d3 select body selectAll p data dataset e
  • 使用 Backbone.js 的 JS 模板系统

    我正在寻找一些好的模板系统 可以与 Backbone js 等 MVC 框架一起使用 我知道这样一个系统 jQuery 模板 然而 由于某些原因 它已经停止 因此我正在寻找其他一些不错的选择 请建议从视图角度足够灵活的东西 例如 基于某些逻
  • Spring Boot属性在初始化时加载,并尊重所有属性并根据属性文件中的值控制@Aspect

    我们正在使用从外部文件加载属性 PropertySources 现在我想启用 禁用 Aspect基于属性 我尝试使用 ConditionalOnExpression这不起作用 我通过创建一个 bean 进行了同样的尝试propertypla
  • “您可能需要一个额外的加载器来处理这些加载器的结果。”

    我目前正在尝试为 ReactJs 构建一个状态管理库 但是一旦我将它实现到我的 React 项目中 使用create react app 它开始丢弃此错误 Failed to compile path to agile dist runti