【发布时间】:2019-05-08 10:53:13
【问题描述】:
我正在构建一个使用 ASP.NET Core 作为后端的应用程序,并为客户端运行一个 React 应用程序。我设置了 webpack 以将 SASS 转换为 CSS,将 TypeScript 转换为 JavaScript,并且我使用 HtmlWebpackPlugin 将这些包添加到 _Layout.cshtml 文件中。捆绑包发布到wwwroot/dist/
这一切都适用于我的本地开发托管。当我尝试在虚拟目录中运行应用程序(我的一些部署的要求)时,挑战就来了。 ASP.NET 将根据托管信息将虚拟路径解析为完整路径(例如,~\resource 解析为 \virtual-directory\resource),但 webpack 资源被编译为固定路径。
我尝试设置publicPath 属性来生成虚拟路径:
output: {
path: path.resolve(__dirname, 'wwwroot/dist'),
publicPath: '~/dist/'
}
虽然这对我的 _Layout.cshtml 文件引用的包非常有用,但插入带有 ASP.NET 将解析的虚拟路径标识符前缀的 href 值,但当任何包引用其他文件时它不起作用,比如图像。这些引用不会被 ASP.NET 解析,并且浏览器会尝试在 https://host/~/dist/images/cat.png 加载资源。
我希望所有资源都相对于应用程序根目录而不是主机根目录进行解析。
【问题讨论】: