0

我正在开发一个用于多个客户端站点的应用程序。它们作为子域或路径(我无法控制)托管,如下所示:

  1. https://application.example.com/#/example-page
  2. https://example.com/application/#/example-page

这是我的 Webpack 1 配置:

module: {
  loaders: [
    {
      ...
    },
    {
      test: /\.(woff2?|eot|svg|ttf|md|jpg|png)$/,
      loader: 'file?name=[hash].[ext]'
    }
  ]
},
output: {
  path: __dirname + "/dist/build/",
  filename: "app.min.js"
}

有了这个,我的资产被编译到一个/build/文件夹中,该文件夹还包含主应用程序 JavaScript 文件:

我的 dist/build 文件夹

我遇到的问题是,如果应用程序托管在预先存在的路径(上面的 URL 示例 2)上,则找不到已编译的资产,但如果不存在路径,则加载得很好。进行一些调试表明,无论出于何种原因,都必须指定/build目录才能在第二个 URL 示例上加载资产,但指定/build会破坏第一个 URL 示例:

  1. https://application.example.com/compiled-asset.png
  2. https://example.com/application/compiled-asset.png ⇐ 404
  3. https://application.example.com/build/compiled-asset.png ⇐ 404
  4. https://example.com/application/build/compiled-asset.png

我在这里做错了什么?

4

1 回答 1

1

似乎对此的答案是将 publicPath 属性添加到loader自身,如下所示:

loader: 'file-loader?name=[hash].[ext]&publicPath=./build/'

我之前曾尝试使用单独的publicPath属性进行此操作,但这没有取得任何成果。

于 2017-01-04T10:10:52.193 回答