Requirejs js和define()方法。抛出:未捕获错误:模块生成不正确,没有模块名称 故事是:

Requirejs js和define()方法。抛出:未捕获错误:模块生成不正确,没有模块名称 故事是:,requirejs,plotly,amd,js-amd,almond,Requirejs,Plotly,Amd,Js Amd,Almond,在我们公司,我们正慢慢地尝试调整我们庞大的应用程序,以使用动态AMD模块加载器。我们不能一次完成所有工作,这就是为什么我们要分步完成:首先,我们希望使用AMD requires将所有javascript重写为typescript,并使用“假”模块化。重写所有内容后,我们将切换到真正的动态模块加载器 问题来了 当我们在页面上包含almond时,会引发以下错误: almond.js:414 Uncaught Error: See almond README: incorrect module b

在我们公司,我们正慢慢地尝试调整我们庞大的应用程序,以使用动态AMD模块加载器。我们不能一次完成所有工作,这就是为什么我们要分步完成:首先,我们希望使用AMD requires将所有javascript重写为typescript,并使用“假”模块化。重写所有内容后,我们将切换到真正的动态模块加载器

  • 问题来了
当我们在页面上包含almond时,会引发以下错误:

almond.js:414 Uncaught Error: See almond README: incorrect module build, no module name
    at define (almond.js:414)
    at plotly.js:7
    at plotly.js:7
它来自多个库,而不仅仅是情节。我设法找到了它,结果发现almond引入了
define()
,它接受了3个必需的参数,而plotly(和其他一些库)使用一个或两个参数调用define():

情节:

if (typeof define==="function" && define.amd ) {
  define([],f)
}
define = function (name, deps, callback) {
    if (typeof name !== 'string') {
        throw new Error('See almond README: incorrect module build, no module name');
    }
    (...)
杏仁:

if (typeof define==="function" && define.amd ) {
  define([],f)
}
define = function (name, deps, callback) {
    if (typeof name !== 'string') {
        throw new Error('See almond README: incorrect module build, no module name');
    }
    (...)
  • 问题:

你知道如何解决这个问题吗?我们可以在Plotly.js之后加载almond.js,但我们希望找到更好的解决方案,并将Plotly与almond结合使用。这可能吗?

正如Almond的自述文件所述:

仅适用于内置/捆绑的AMD模块,不进行动态加载

重点补充。
define
的形式(不带将模块名称作为第一个参数的字符串)用于未经过构建或绑定过程的文件中。AMD绑定器在进行绑定时,将使用
定义
调用并添加模块名称作为第一个参数。您引用的文件未包含在捆绑包中,因此它们缺少模块名称

解决方案:使用AMD捆绑机,比如将模块捆绑到Almond将使用的单个捆绑包中