【问题标题】:gojs and Aurelia mismatch errorgojs 和 Aurelia 不匹配错误
【发布时间】:2018-03-23 13:52:44
【问题描述】:

我创建了一个新的 aurelia 项目并通过 npm 安装了 gojs。我将 gojs 添加到 aurelia.json 依赖项中,并且没有添加任何 gojs 代码,只是尝试构建项目。构建工作正常,gojs 转到 vendor-bundle.js 问题是,当我运行项目时,我从 gojs 收到错误。当我删除 aurelia.json 中的 gojs 依赖项时,项目运行得很好,但添加回来总是会引发下面的相同错误。请帮忙。

Uncaught Error: Mismatched anonymous define() module: [object Object]
http://requirejs.org/docs/errors.html#mismatch
   at makeError (vendor-bundle.js:11531)
   at intakeDefines (vendor-bundle.js:12617)
   at vendor-bundle.js:12815
makeError @ vendor-bundle.js:11531
intakeDefines @ vendor-bundle.js:12617
(anonymous) @ vendor-bundle.js:12815
setTimeout (async)
req.nextTick @ vendor-bundle.js:13178
localRequire @ vendor-bundle.js:12812
requirejs @ vendor-bundle.js:13160
(anonymous) @ vendor-bundle.js:13199
(anonymous) @ vendor-bundle.js:13508

【问题讨论】:

    标签: aurelia gojs


    【解决方案1】:

    为了澄清一些混淆,您正在谈论在 aurelia.json 中声明依赖项,这意味着您将 aurelia-cli 与 requirejs 加载程序一起使用。

    jmdavid 的回答提到了 webpack,这完全是一个不同的野兽。您没有在 aurelia.json 中声明依赖项; webpack 通过它在你的入口文件中找到的导入来自行解决这些问题。出于各种原因,我实际上建议切换到 webpack;它会修复错误的事实只是其中之一。

    错误可能是由于go.js 模块被加载两次。错误在第二次加载时引发;无论错误如何,它都应该仍然有效。您无法使用 requirejs 以任何直接的方式消除错误,这是由于 go.js 版本是如何打包的。

    在此处加载go.js 的唯一无错误方法是在加载requirejs 之前这样做。在 aurelia.json 中:

    "node_modules/gojs/release/go.js",
    "node_modules/requirejs/require.js"
    

    然后也不需要导入它,它将在全球范围内可用。

    【讨论】:

    • 这很好用。感谢您解释错误是什么。
    • 知道为什么 gojs 模块会被加载两次吗?这是 go.js 库中的错误吗?
    • @SimonSarris 因为你是一个 go.js 开发者,所以我看了一下,发现它实际上马上就被这个位阻塞了:(window.go = ca, window.define(ca));。它没有被定义两次;相反,它被全局设置一次,并试图被定义,但该调用根本失败。您需要删除该window.ca = ca,因为它超出了异步模块加载的目的,并将定义调用更改为window.define('go', ca)。这将允许人们执行import * as go from "go" 之类的操作,并且在用户代码中发生 那个 调用之前不会加载它。
    • 实际上脚本无论如何都会被加载,因为库的发布格式对模块加载器不友好。如果这是您想要改进的地方,我建议您查看 aurelia 的任何核心包并查看 dist 文件夹。每个模块加载器格式都有一个单独的发布文件,所有这些都是自动生成的。它很整洁,我认为像 go.js 和 gsap 这样的库不这样做是一种耻辱。
    • @FredKleuver 感谢您的建议!
    【解决方案2】:

    可能这些版本在 fedoranimus github (https://github.com/fedoranimus/aurelia-gojs) 上已经过时了。

    我通过使用带有 webpack 和 typescript 的 cli(au new)创建一个新项目,然后 npm 安装了 gojs(版本“^1.8.15”),然后从 fedoranimus 复制了相关代码。

    【讨论】:

    • 我创建了一个新项目(au new)并 npm 安装了 gojs,将 gojs 添加到 aurelia.json 和 au 构建中,但错误仍然发生。 aurelia.json 文件中添加 gojs 了吗?
    • @jmdavid 他没有在任何地方提到 fedoranimus 的 github,所以我什至认为这与这里无关。版本也没有区别
    • 看起来使用 webpack 是你和我的版本之间的区别。我使用 requirejs,这就是问题的根源。做@FredKleuver 说的解决了这个问题。
    • 仅供参考:依赖项已更新。但是,是的,OP 看到了 requirejs 的问题。希望 GoJS 团队将在未来的版本中给我们一个命名定义。
    猜你喜欢
    • 2016-03-14
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多