vue/cli3.0脚手架部署到nginx时页面空白的问题及解决
明确一下问题
vue/cli3.0部署到nginx出现页面白屏,不能正常显示网页内容,利用F12,经过初步判断,是路径设置问题。
对比一下2.0与3.0.
先对比一下两个版本脚手架的目录结构
2.0目录结构
3.0目录结构
可见,vue-cli3.0与2.0有一个不同之处是3.0脚手架中没有build和config文件,在往nginx中部署2.0时,我们可以通过修改build和config中的路径,就可以成功用nginx访问,但对于3.0来说,其本身没有build文件,所以并不好去修改路径,当然貌似也可以去手动创建以个build文件,在里面进行手动编辑,这样肯定是会比较麻烦的。
我在遇到这个问题的时候,在网上搜集了很多办法,大多数都是以修改2.0的build文件中的路径为主。
后来终于找到一种解决办法,而且只加了一行代码.
解决办法
就是在vue.config.js文件中加一个基本路径
baseUrl: './',
首先,这句话的意思就是让打包后(npm run build )的index.html去找相对路径下的css和js文件。
一般而言,打包后的文件都在dist文件下,index.html与js和css处于同一级目录下,这样设置路径之后就会使得index直接去同级目录下去检索.
而在不这样设置的情况下,会默认去读取绝对根目录下的文件,css和js一般不在根目录下,而是与index.html同级,找不到样式便不能加载页面样式,这也是出现空白的原因所在。
再看看3.0的文件夹结构
3.0的脚手架,虽然没有了2.0的build和config文件,却有了一个vue.config.js文件,利用这个文件,很多的东西都在这里可以配置,其实进一步提升了在vue脚手架中的配置设置。
怎么写这个文件呢?
附一下vue.config.js的文件语法:
module.exports = { // 基本路径 baseUrl: '/', // 输出文件目录 outputDir: 'dist', // eslint-loader 是否在保存的时候检查 lintOnSave: true, // use the full build with in-browser compiler? // https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only compiler: false, // webpack配置 // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md chainWebpack: () => {}, configureWebpack: () => {}, // vue-loader 配置项 // https://vue-loader.vuejs.org/en/options.html vueLoader: {}, // 生产环境是否生成 sourceMap 文件 productionSourceMap: true, // css相关配置 css: { // 是否使用css分离插件 ExtractTextPlugin extract: true, // 开启 CSS source maps? sourceMap: false, // css预设器配置项 loaderOptions: {}, // 启用 CSS modules for all css / pre-processor files. modules: false }, // use thread-loader for babel & TS in production build // enabled by default if the machine has more than 1 cores parallel: require('os').cpus().length > 1, // 是否启用dll // See https://github.com/vuejs/vue-cli/blob/dev/docs/cli-service.md#dll-mode dll: false, // PWA 插件相关配置 // see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa pwa: {}, // webpack-dev-server 相关配置 devServer: { open: process.platform === 'darwin', host: '0.0.0.0', port: 8080, https: false, hotOnly: false, proxy: null, // 设置代理 before: app => {} }, // 第三方插件配置 pluginOptions: { // ... } }
贴一张我在项目中的用例:
这是可以成功部署到nginx中的项目配置写法,其中用到了基本路径和后台代理等相关配置。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
vue填坑之webpack run build 静态资源找不到的解决方法
今天小编就为大家分享一篇vue填坑之webpack run build 静态资源找不到的解决方法。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-09-09vue directive全局自定义指令实现按钮级别权限控制的操作方法
这篇文章主要介绍了vue directive全局自定义指令实现按钮级别权限控制,本文结合实例代码对基本概念做了详细讲解,需要的朋友可以参考下2023-02-02
最新评论