Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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 “淘汰组件”;使用需要,但不存在AMD加载程序”;_Javascript_Knockout.js_Gulp_Durandal_Almond - Fatal编程技术网

Javascript “淘汰组件”;使用需要,但不存在AMD加载程序”;

Javascript “淘汰组件”;使用需要,但不存在AMD加载程序”;,javascript,knockout.js,gulp,durandal,almond,Javascript,Knockout.js,Gulp,Durandal,Almond,我目前在一个Durandal项目中工作,研究在我的应用程序中使用。我正在使用Gulp和插件进行构建,并将其配置为使用almond 我遇到一个问题,当导航到使用新注册组件的某个页面时,我收到以下错误: 组件:函数(){return componentBindingValue;}“消息: 组件“myComponent”:使用require,但不存在AMD加载程序 为了提供尽可能多的信息,这里是我目前正在使用的gulpfile var gulp=require('gulp'); var durand

我目前在一个Durandal项目中工作,研究在我的应用程序中使用。我正在使用Gulp和插件进行构建,并将其配置为使用almond

我遇到一个问题,当导航到使用新注册组件的某个页面时,我收到以下错误:

组件:函数(){return componentBindingValue;}“消息: 组件“myComponent”:使用require,但不存在AMD加载程序

为了提供尽可能多的信息,这里是我目前正在使用的gulpfile

var gulp=require('gulp');
var durandal=需要('gulp-durandal');
吞咽任务('durandal',函数(){
杜兰达尔({
baseDir:“应用程序”,
main:'main.js',
输出:“main build.js”,
阿蒙德:没错,
缩小:是的,
rjsConfigAdapter:函数(rjsConfig){
rjsConfig.path={
“text”:“../Scripts/text”,
“durandal”:“../Scripts/durandal”,
“插件”:“../Scripts/durandal/plugins”,
“转换”:“../Scripts/durandal/transitions”,
“数据服务”:“域/数据服务”
};
返回rjsConfig;
}
}).pipe(吞咽目标(“构建”);

})
Durandal Gulp任务正在调用r.js,其wrap参数配置为使用Almond源代码将应用程序代码封装在IFFE中。不幸的是,Almond的require、requirejs和define实现被捆绑在内部,并没有像Knockout预期的那样添加到全局窗口范围中

您可以操作rjsConfigAdapter中的wrap参数来删除IFFE包装,或者只需在应用程序代码中首先向窗口对象添加require/define即可解决此问题


我也遇到过这个问题,但是我有一个简单得多的前端堆栈,我只在一个页面上看到它,尽管我在我的站点的多个地方使用了这个组件


事实证明,这也可能是一种竞争条件。我不得不将我的
ko.applyBindings
放在
文档中。准备好了
回调,一切都正常了。

如果你将almond:false设置为false,它会正常工作吗?很遗憾,不会。如果我将脚本更改为“almond:false”“然后,当尝试运行main.js时,我得到了一个错误:‘uncaughtreferenceerror:define未定义’`好吧,值得一试,看起来您得到的错误消息来自此。我会尝试使用调试版本的knockout,并在这里放置一个断点,然后跟踪堆栈跟踪,看看是否还会显示更多内容。如果你对击倒组件不感兴趣,你也可以尝试使用内置的durandal,它与ko非常相似components@James你有什么解决办法吗?因为我也面临同样的问题issue@SivanrajM没有。我看到您也对我登录Github的问题发表了评论。我在3.2中也注意到了这个问题,当时我正在使用Weyland构建我的应用程序。由于Weyland已经停产,决定升级为Gulp。一个有根据的猜测会让我相信杏仁和淘汰赛在一起玩得不好。
requirejs.config(config);
window.require = require;
window.requirejs = requirejs;
window.define = define;