Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript r、 在自执行函数中使用匿名定义的js_Javascript_Requirejs_Breeze_R.js - Fatal编程技术网

Javascript r、 在自执行函数中使用匿名定义的js

Javascript r、 在自执行函数中使用匿名定义的js,javascript,requirejs,breeze,r.js,Javascript,Requirejs,Breeze,R.js,我试图通过grunt和durandal grunt任务使用r.js将durandal应用程序优化为单个文件 我使用的js库是在顶级自执行函数中向require注册的。下面的代码来自breeze.js源代码,但在knockout、moment+others中的代码在概念上是相同的 if (typeof exports === "object" && typeof module === "object") { module.exports = def(); } else i

我试图通过grunt和durandal grunt任务使用r.js将durandal应用程序优化为单个文件

我使用的js库是在顶级自执行函数中向require注册的。下面的代码来自breeze.js源代码,但在knockout、moment+others中的代码在概念上是相同的

if (typeof exports === "object" && typeof module === "object") {
    module.exports = def();
 } else if (typeof define === "function" && define["amd"]) {
    define(def);
} else {
    breeze = def();
}
问题是r.js优化器显然无法将模块id插入匿名定义中

这意味着当加载优化的构建文件时,breeze将注册为一个没有名称的模块,因此它可能是“必需的”到其他模块中

处理这个问题的最好方法是什么?(例如,修改源以定义('breeze',[],def)就可以了)


可能会对代码进行修补,使其“知道”它在使用almond运行,并使用可配置的名称注册?

您是否确实尝试过使用
r.js
优化问题中显示的代码。根据我的经验,
r.js
能够找到
define
调用并添加模块名称本身。在某些情况下,它无法做到这一点(例如,如果
define
已经有了模块名),但您显示的代码不是这种情况。当然,我尝试过,我无法让r.js插入模块名。你知道它确实有效吗?(我可能有一些配置错误)是的,在发表我的评论之前我检查了一下。好的,谢谢-我会在一个简化的项目上再试一次-你使用了任何非默认的r.js设置吗?我使用了这个
r.js-o name=whater out=foo baseUrl=js
其中
whater
是我的一个模块,我在其中有一个
define
调用,就像你在问题中的调用一样。(请确保您使用的是最新版本的
r.js
。也许您已经在这样做了,但一旦OP升级到最新版本,so上出现的一些问题就消失了,所以我想我应该提一下。)