资讯专栏INFORMATION COLUMN

Vue项目部署在非网站根目录的解决方案

hot_pot_Leo / 1352人阅读

摘要:给的配置是基于根目录下的,官方链接我们需要根据实际部署的网站目录调整一下官方指导需要修改为完美

这篇文章主要介绍了在实际开发中遇到Vue项目编译后部署在非网站根目录的问题,通过搜索学习得到的解决方案。
本次域名环境:
www.admin.com/version1/
修改配置文件

修改打包后的资源引用路径
找到config/index.jsbuild属性下的assetsPublicPath
/修改为/version1/

build: {
  // Paths
  assetsRoot: path.resolve(__dirname, "../dist"),
  assetsSubDirectory: "static",
  assetsPublicPath: "/version1/",
  ...
}

修改打包后的样式(图片、视频、字体文件等)引用路径
找到build/utils.js
添加或修改publicPath: "../../"

// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
  return ExtractTextPlugin.extract({
    use: loaders,
    fallback: "vue-style-loader",
    publicPath: "../../"
  })
} else {
  return ["vue-style-loader"].concat(loaders)
}
修改项目的路由

在路由的history模式下,所有的路由都是基于根路径的,如/xxxx,由于项目部署在/version下,我们可以修改路由来保证页面正常访问
我们可以来定义一个变量区分开发环境或生产环境

找到config/dev.env.js,定义一个ROUTER_BASE的变量,值为/,{代表开发环境是基于根目录}

module.exports = merge(prodEnv, {
  NODE_ENV: ""development"",
  ROUTER_BASE: ""/""
})

找到config/prod.env.js,定义一个ROUTER_BASE的变量,值为/version1/,{代表生产环境是基于version1目录}

module.exports = merge(prodEnv, {
  NODE_ENV: ""development"",
  ROUTER_BASE: ""/version1/""
})

vue-router里提供了一个base的属性,代表应用的基目录

const routers = new Router({
 mode: "history",
 base: process.env.ROUTER_BASE,
 ...
})

此时base可以根据我们定义的变量ROUTER_BASE来区分环境

至此,打包配置的相关修改已全部完成,项目也能够正常访问。 但还是会有一个问题,跳转到某个路由后,刷新页面,就gg了,页面为空白,此时就要修改nginx的配置了。

vue给的nginx配置是基于根目录下的, 官方链接
我们需要根据实际部署的网站目录调整一下

location / {
 try_files $uri $uri/ /index.html; //官方指导

 // 需要修改为
 try_files $uri $uri/ /version1/index.html;
}

完美

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/63789.html

相关文章

  • Vue项目部署在非网站目录解决方案

    摘要:给的配置是基于根目录下的,官方链接我们需要根据实际部署的网站目录调整一下官方指导需要修改为完美 这篇文章主要介绍了在实际开发中遇到Vue项目编译后部署在非网站根目录的问题,通过搜索学习得到的解决方案。 本次域名环境: www.admin.com/version1/ 修改配置文件 修改打包后的资源引用路径找到config/index.js中build属性下的assetsPublicPat...

    alphahans 评论0 收藏0
  • Vue项目部署遇到问题及解决方案

    摘要:模式部署没有什么问题,只要访问到服务器上的,就可以访问网站了。问题起因在做年度账单项目的时候,项目部署的时候,用的是模式。这样几项配置后,就可以在子目录下访问网站,刷新也没有问题。 写在前面 Vue-Router 有两种模式,默认是 hash 模式,另外一种是 history 模式。 hash:也就是地址栏里的 # 符号。比如 http://www.example/#/hello,...

    姘搁『 评论0 收藏0
  • Vue项目部署遇到问题及解决方案

    摘要:模式部署没有什么问题,只要访问到服务器上的,就可以访问网站了。问题起因在做年度账单项目的时候,项目部署的时候,用的是模式。这样几项配置后,就可以在子目录下访问网站,刷新也没有问题。 写在前面 Vue-Router 有两种模式,默认是 hash 模式,另外一种是 history 模式。 hash:也就是地址栏里的 # 符号。比如 http://www.example/#/hello,...

    marek 评论0 收藏0
  • 学习meteor时遇到问题

    摘要:简单记录一下学习时遇到的问题,将会持续更新基于的前端方案方案大概有后端模板结合型和前端后端分离型两种,支持的包也比较多,目前尤大推荐使用的方案相对靠谱。 简单记录一下学习meteor时遇到的问题,将会持续更新! 基于meteor的前端方案 方案大概有后端模板结合型和前端后端分离型两种,支持的包也比较多,目前尤大推荐使用webpack:webpack的方案相对靠谱。 博主自己写的例子:m...

    lemanli 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<