我做了以下设置:
添加了以下脚本标记:
<script src="Scripts/linq.js"></script>
在main.js中配置linq.js
requirejs.config({
paths: {
'text': '../Scripts/text',
'durandal': '../Scripts/durandal',
'plugins': '../Scripts/durandal/plugins',
'transitions': '../Scripts/durandal/transitions',
'knockout': '../Scripts/knockout-2.3.0',
'jquery': '../Scripts/jquery-1.9.1,',
'linq': '../Scripts/linq'
}
// The ko in this project is already AMD
, shim: {
linq : {
exports: 'Enumerable'
}
}
});
尝试在我的一个viewmodel(shell.js)中获取它的副本,如下所示:
define(['plugins/router', 'durandal/app','linq'], function (router, app, linq)
使用weyland优化构建,但是我得到了:
错误1 ENOENT,没有这样的文件或目录 'C:\ Project \ build \ App \ linq.js'C:\ Project \
我是新手,我有什么不对吗?
我认为垫片应该指向全局变量,我做了。
除了垫片之外,我还需要创建自己的定义吗?我认为Shim应该是一个语法糖包装器,而不是定义一个全局变量?
答案 0 :(得分:1)
在这种情况下不应要求垫片,其中linq
包含在脚本标记中。在通过require.js加载linq
之前,只需确保通过脚本标记加载main.js
。接下来删除配置条目和依赖项。
requirejs.config({
paths: {
'text': '../Scripts/text',
'durandal': '../Scripts/durandal',
'plugins': '../Scripts/durandal/plugins',
'transitions': '../Scripts/durandal/transitions',
'knockout': '../Scripts/knockout-2.3.0',
'jquery': '../Scripts/jquery-1.9.1,'
}
}
});
define(['plugins/router', 'durandal/app'], function (router, app){...
这样就没有必要配置weyland来排除它。