在本地IIS上加载块失败

时间:2016-11-30 16:57:46

标签: angular iis asp.net-core webpack angular2-routing

上下文:Asp.Net Core,发布在本地IIS上,webpack。

所以我在http://localhost/wanvet托管了我的一个网站。 (本地IIS)

对于主页面(仪表板),一切都按预期工作。

当我尝试访问另一个组件时,我收到http://localhost/dist/0.hash.chunk.js而不是http://localhost/wanvet/dist/0.hash.chunk.js的请求,其中wanvet是我的本地iis别名(文件夹)。

这是附加调用的脚本:

BaseURI是: Script appending baseURI

src如下: Src for current chunk script

这是控制台异常: Console exception for chunk loading failed

我认为解决此问题的一种方法是在http://localhost/托管网站,但我真的没有。

从root用户成功请求js,css:

Request from root

稍后编辑:添加了一个修改输出publicPath的答案。我仍然期待其他意见。

1 个答案:

答案 0 :(得分:2)

以下是一个经过验证的想法。

在webpack.config中,我们可以定义一个appName变量,该变量将代表IIS中用于部署应用程序的别名(文件夹)。

在我们创建publicPath属性时使用它。

var isDevBuild = process.argv.indexOf('--env.prod') < 0;
var appName = 'wanvet'; // folder name in local IIS
var publicPath = isDevBuild ? '/dist/' : '/' + appName + '/dist/';

module.exports = merge({
    ........
    entry: {
        'main': './Client/main.ts'
    },
    output: {
        path: path.join(__dirname, '../wwwroot', 'dist'),
        filename: '[name].js',
        publicPath: publicPath
    },
    ........
    }, isDevBuild ? devConfig : prodConfig)

当然,您可以在dev / prod配置中定义publicPath,dev '/dist/'和prod '/appName/dist/'