Javascript ko在Chutzpah中未定义错误
我正试图为我的SPA项目编写单元测试。我们使用了Javascript ko在Chutzpah中未定义错误,javascript,jquery,knockout.js,requirejs,chutzpah,Javascript,Jquery,Knockout.js,Requirejs,Chutzpah,我正试图为我的SPA项目编写单元测试。我们使用了Durandal(框架)、Knockout(绑定)和RequireJs 我已经在VisualStudio2012中安装了Chutzpah 当我为视图模型运行测试时,它将我抛出错误,即使敲除js和其他js加载正确 未捕获引用错误:未定义ko 我的Json配置代码: 我的配置Js代码: myfirsttest.Js代码: 视图模型代码: Jquery的配置工作得非常完美,因为knockout也与之相同。但这是错误的 有什么想法/建议为什么会出错 我需要
Durandal(框架)、Knockout(绑定)和RequireJs
我已经在VisualStudio2012中安装了Chutzpah
当我为视图模型运行测试时,它将我抛出错误,即使敲除js和其他js加载正确
未捕获引用错误:未定义ko
我的Json配置代码:
我的配置Js代码:
myfirsttest.Js代码:
视图模型代码:
Jquery的配置工作得非常完美,因为knockout也与之相同。但这是错误的
有什么想法/建议为什么会出错
我需要单独加载ko(淘汰赛)吗
编辑1:
我已尝试将knockout
更改为ko
它给了我错误Uncaught error:scripterror for:knockout
编辑2:
当我应用这个解决方案时,我面临的问题是,那些现有的代码文件需要进行大量的更改,并且文件数量以数百计。从Init.Js
中,我们加载了Jquery和Knockout。如下图所示
requirejs.config({
paths: {
'text': '../Scripts/text',
'durandal': '../Scripts/durandal',
'plugins': '../Scripts/durandal/plugins'
}
});
define('jquery', [], function () {
return jQuery;
});
define('knockout', [], function () {
return ko;
});
因此,在任何viewmodel中,我们都可以将knockout的实例作为ko
,而无需在每个veiwmodel中为knockout声明require js内容(如您所建议的)
但当我在Chutzpah宣言中尝试同样的方法时,这是行不通的。不知道为什么
希望您理解这个问题。在您的问题中显示的两个模块中,您都使用了
ko
,但没有在依赖项列表中列出knockout
。这是获得错误的可靠方法。修改模块以在依赖项中列出knockout
,并向给define
的回调添加相应的参数。比如说,
define(['knockout', 'plugins/dialog'], function (ko, dialog) {
在您的问题中显示的两个模块中,您都使用了
ko
,但您没有在依赖项列表中列出knockout
。这是获得错误的可靠方法。修改模块以在依赖项中列出knockout
,并向给define
的回调添加相应的参数。比如说,
define(['knockout', 'plugins/dialog'], function (ko, dialog) {
谢谢你的回答很有帮助。请看我的编辑2。谢谢你的回答很有帮助。请看我的编辑2。
define(['plugins/dialog'], function (dialog) {
var subscriberList = ko.observableArray(); //Getting Error here - while loading the Js for Unit Testing
var JsQ = $; //Getting JQUERY members here. // Works good.
//Other Logics goes here
return {
subscriberList : subscriberList,
JsQ : JsQ
};
});
requirejs.config({
paths: {
'text': '../Scripts/text',
'durandal': '../Scripts/durandal',
'plugins': '../Scripts/durandal/plugins'
}
});
define('jquery', [], function () {
return jQuery;
});
define('knockout', [], function () {
return ko;
});
define(['knockout', 'plugins/dialog'], function (ko, dialog) {