IIS下提供的Vue.js无法找到资产文件
更新 进一步挖掘之后,我认为问题与以下事实有关:引用CSS文件等资产,例如href=“/CSS/style.CSS”IIS将通过导航到服务器的根文件夹,而不是应用程序的根文件夹,例如localhost/myapp/CSS/style.CSS,来解决此问题。然而,这似乎只有在运行Vue应用程序时才会发生,当我在自己的应用程序中“部署”原始html文件时,CSS和JS文件路径被正确解析 原创帖子 我用Vue路由器在Vue.js中开发了一个示例待办应用程序。当使用VUE CLI提供服务时,它会按预期工作,但是当我从IIS应用程序下的dist文件夹中构建并放置文件时,会出现错误,表明服务器尝试在localhost根目录而不是localhost/todos中查找资产文件(如css和js)。错误示例:IIS下提供的Vue.js无法找到资产文件,iis,vue.js,Iis,Vue.js,更新 进一步挖掘之后,我认为问题与以下事实有关:引用CSS文件等资产,例如href=“/CSS/style.CSS”IIS将通过导航到服务器的根文件夹,而不是应用程序的根文件夹,例如localhost/myapp/CSS/style.CSS,来解决此问题。然而,这似乎只有在运行Vue应用程序时才会发生,当我在自己的应用程序中“部署”原始html文件时,CSS和JS文件路径被正确解析 原创帖子 我用Vue路由器在Vue.js中开发了一个示例待办应用程序。当使用VUE CLI提供服务时,它会按预期工
http://localhost/css/app.45a2082d.css net::ERR_ABORTED 404 (Not Found)
http://localhost/js/app.34c2e8cc.js net::ERR_ABORTED 404 (Not Found)
我遵循了官方网站上指定的IIS步骤,即安装了IIS URLRewite并包含了web.config,但是我得到了相同的结果。包括web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Handle History Mode and custom 404/500" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
当通过IIS Express启动时,它会按预期工作,即加载index.html文件,而index.html文件又会正确加载所有其他资产。这些路由工作正常,因为我能够在页面/路由(主页和关于)之间切换。但是,当我发布此web应用程序并使用更新的web.config文件(前面提到的URL重写规则+特定于.Net核心的配置)将其置于IIS下时,我遇到了相同的问题-IIS似乎尝试从根本地主机位置加载资产
我如何告诉IIS在应用程序的根位置(即iinetpub\wwwroot\Todos)而不是本地主机的根位置查找资产文件
我构建的dist文件和目录如下所示:
- index.html
- css/app.45a2082d.css
- js/app.34c2e8cc.js
export default new Router({
mode: "history",
routes: [
{
path: "/",
name: "home",
component: Home
},
{
path: "/about",
name: "about",
component: About
}
]
});
IIS配置中是否缺少其他内容?为什么它可以在IIS Express下工作,但不能在系统的IIS下工作?问题出在其他地方了吗?事实证明,我必须配置Vue来设置baseUrl并匹配应用程序的路径。在vue.config.js中:
module.exports = {
baseUrl: '/todos'
};
module.exports = {
baseUrl: '/todos'
};