bundle中的脚本是用~/Scripts渲染的,所以找不到它

本文关键字:找不到 脚本 bundle Scripts | 更新日期: 2023-09-27 18:08:48

我有一个MVC应用程序,部分由别人开发。它在那个特定的机器里工作。当我在我的机器上运行应用程序时,我发现bundle中的脚本是用相对路径渲染的。

<script type="text/javascript" src="~/Scripts/jquery-1.9.1.js"></script>

所有的脚本呈现相同的方式,其中CSS文件呈现良好。我是这样使用bundle的。

在BundleConfig.cs

  bundles.Add(new ScriptBundle("~/bundles/EMRMobileScript").Include (
  "~/MobileQuerys/js/jquery.js",
  "~/MobileQuerys/docs/_assets/js/jqm-demos.js"
  ));
在_Layout.cshtml

@Styles.Render("~/Content/EMRMobilecss")
@System.Web.Optimization.Scripts.Render("~/bundles/EMRMobileScript") 

浏览器控制台中

GET http://localhost:6326/~/Scripts/jquery-1.9.1.js 404 (Not Found) 

为什么用~渲染??

bundle中的脚本是用~/Scripts渲染的,所以找不到它

您的客户端不知道"~"符号是什么意思,而服务器知道。它只是你放在字符串中的另一个字符。

当你添加一个相对src时,它将被"连接"到当前路径,即

http://localhost:6326/

这就是为什么你得到这个请求:

http://localhost:6326/~/Scripts/jquery-1.9.1.js

现在,当您在服务器中使用这行代码时:
@Styles.Render("~/Content/EMRMobilecss")

服务器知道如何映射路径(其中~是应用程序的"根"目录)。

为了从你的js中渲染特定的bundle,使用如下命令:

<script src='http://localhost:6326/Scripts/jquery-1.9.1.js'></script>

如果它在本地主机上运行,则会发生已知的错误。如果IIS正在运行应用程序,则很可能存在问题。你有没有试过只用MVC来运行这个?