在子目录中部署VueJS App

Har*_*rry 21 webpack vue.js vuejs2

我在部署使用Webpack CLi构建的Vue JS应用程序时遇到了问题.

如果在根目录中上传,则所有内容都可以正常呈现,但在子文件夹中,所有链接都会中断.

我添加了一个基本的href:

    <base href="/dist/">
Run Code Online (Sandbox Code Playgroud)

并且脚本加载,但Webpack创建的所有资产路径都被破坏,图像和字体不会加载,因为它们指向根目录.

有人可以帮忙吗?

Mat*_*att 25

假设你正在使用vue-cli中的webpack模板,你需要assetsPublicPathconfig/index.js中编辑属性- 注意有一个用于build和为dev

有关详细信息,请查看文档中的处理静态资产部分.

更新:

CLI v3 +用户的新链接:https://cli.vuejs.org/guide/html-and-static-assets.html

请注意,该属性刚刚被调用 publicPath

  • 如何用vue-cli 3做到这一点? (3认同)

jed*_*dik 23

对于Vue CLI 3,它非常简单.

编辑您的vue.config.js(如果没有,在项目根目录中创建它)并添加以下行:

module.exports = {
  baseUrl: "./"
};
Run Code Online (Sandbox Code Playgroud)

或者你想要的任何子目录.

你也可以根据NODE_ENV.查看文档.

module.exports = {
  baseUrl: process.env.NODE_ENV === 'production'
    ? '/production-sub-path/'
    : '/'
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

如下面的评论中所述,对于Vue CLI 3.3+使用publicPath属性而不是baseUrl.

  • baseUrl 现在已弃用,取而代之的是 publicPath。工作正常! (3认同)