我尝试部署基于Durandal的解决方案。但是一旦部署我就会收到以下错误。
Uncaught ReferenceError: requirejs is not defined main.js:1
(anonymous function)
我探索了与项目一起部署的文件,并且需求包含在解决方案/路径中。这些文件已与它们一起部署。开发和生产副本之间的所有不同之处在于我的java脚本文件被压缩。我的下一步是以任何方式查看这是否与问题有关?
更新: 我发现问题的根源如下:
<body>
<div id="applicationHost">
@Html.Partial("_splash")
</div>
@Scripts.Render("~/scripts/vendor")
@if (HttpContext.Current.IsDebuggingEnabled)
{
<script type="text/javascript" src="~/App/durandal/amd/require.js" data-main="@Url.Content("~/App/main")"></script>
}
else
{
<script type="text/javascript" src="~/App/main.js"></script>
}
</body>
如果我删除 IsDebuggingEnabled 检查,只需保留以下内容即可(显然)
<script type="text/javascript" src="~/App/durandal/amd/require.js" data-main="@Url.Content("~/App/main")"></script>
据我记忆,我没有触及过此代码(在模板初始项目设置时创建)。所有这些都应该与Durandal VSX模板一样。
在非调试部署期间,任何想法都会被删除吗? :/
答案 0 :(得分:2)
Durandal 1.2附带一个optimizer.exe(http://durandaljs.com/documentation/Optimizing-On-Dot-Net/),可以创建一个优化版本main-built.js
,其中包含Almond(默认)或RequireJS捆绑。上面的示例尝试加载源main.js
,这就是抛出错误的原因。
成功运行optimizer.exe后,代码应更改为此。
...
else
{
<script type="text/javascript" src="~/App/main-built.js"></script>
}