本地代码调试完事ok, npm run build生成的dist文件夹丢到服务器,然后what?!!!!! 页面一片空白?!!!! css和js都报404引用不到。。。
一番排查下来发现是路径不对,引用路径是www.../static/...js,实际目录应该为 www.../dist/static/...js
路径解决方法
在 conig/index.js 里面的 build配置里面
// 由原来的绝对路径 '/' 配置为相对路径 './' 或者 '/二级目录(dist)/'
assetsPublicPath: './',
重新build放到服务器,发现js和css都能正常引用了,但是页面还是什么内容都出不来,这又是为什么呢为什么???
又是一番百度下来,发现是路由中的history惹得祸。。。
开启history模式的时候,并没有对路由进行任何处理,在Dev阶段一切都是正常的,可是打包之后,访问项目路径:
sdp.driver.com/driver/
会发现页面一片空白,但是静态文件都能够正常的引用,因为使用了YII中的模块,所以除了域名之外,还会带有driver模块名。一般很多人创建的项目都放在了根目录下面,也就是:
sdp.driver.com
这样的一种形式,没问题。可是如果配置了模块,或者放置在了子文件夹下面,那么就会出问题。其实,这是因为router无法找到路径中的组件,所以也就无法渲染了。只需要修改router中的index.js,在每个path中加上你项目名称就行了,这样就能够成功了。
路由history模式解决方法
1. 简单粗暴,去掉 router/index.js路由里面的'mode: 'history'
2. 在router/index.js的所有路由跳转里面加上文件目录,例如/dist为根目录下面的文件目录
export default new Router({
mode: 'history',
fallback: true,
scrollBehavior (to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
if (from.meta.keepAlive) {
from.meta.savedPosition = document.body.scrollTop
}
return { x: 0, y: to.meta.savedPosition || 0 }
}
},
routes: [
{
path: '/dist',
redirect: '/dist/main'
},
{
path: '/dist/main',
name: 'main',
component: () => import('@/views/main.vue'),
meta: {
title: '大数据首页'
}
},
......
问题2:vue本地运行的时候只能用localhost访问,本机ip访问不了。。
解决方法:
config/index.js 中 host改为 '0.0.0.0'
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// Various Dev Server settings
host: '0.0.0.0', // can be overwritten by process.env.HOST
port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,