微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

publicPath 不起作用,但 __webpack_public_path__ 起作用

如何解决publicPath 不起作用,但 __webpack_public_path__ 起作用

我正在构建一个单一的 SPA 应用程序,但在部署方面遇到了问题。 我将每个应用程序部署在子目录(app-bar-mf、products-mf 等)中,并在根目录下部署 root-config(主应用程序)。

在本地工作时,每个应用程序都通过其自己的服务器(localhost:9000、localhost:9001 等)提供服务,因此此处没有子目录。

当我尝试部署时,不使用 publicPath,并且资产通过“/img/foo.png”而不是“/products-mf/img/foo.png”提供。

如果我在 main.js 中设置 __webpack_public_path__,一切都会按预期进行。

有什么线索吗?

vue.config.js

module.exports = {
  publicPath: process.env.NODE_ENV === "production" ? "/products-mf/" : "/",configureWebpack: () => {
    const conf = {
      externals: [
        "vue","vuex","vue-router","vue-i18n"
      ]
    };

    if (process.env.NODE_ENV === "production") {
      conf.output = { "products.js" };
    }

    return conf;
  },filenameHashing: false,transpileDependencies: ["vuetify"]
};

解决方法

在单 SPA 项目中,我们使用 systemjs-webpack-interop 以根据托管微前端的 URL 动态设置 __webpack_public_path__。这对于数百个单一 spa 应用程序运行良好,因此您可以考虑使用相同的逻辑。此插件包含在 create-single-spa 生成的 Vue 项目中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。