vue/cli3.0腳手架部署到nginx時(shí)頁(yè)面空白的問(wèn)題及解決
明確一下問(wèn)題
vue/cli3.0部署到nginx出現(xiàn)頁(yè)面白屏,不能正常顯示網(wǎng)頁(yè)內(nèi)容,利用F12,經(jīng)過(guò)初步判斷,是路徑設(shè)置問(wèn)題。
對(duì)比一下2.0與3.0.
先對(duì)比一下兩個(gè)版本腳手架的目錄結(jié)構(gòu)
2.0目錄結(jié)構(gòu)

3.0目錄結(jié)構(gòu)

可見,vue-cli3.0與2.0有一個(gè)不同之處是3.0腳手架中沒(méi)有build和config文件,在往nginx中部署2.0時(shí),我們可以通過(guò)修改build和config中的路徑,就可以成功用nginx訪問(wèn),但對(duì)于3.0來(lái)說(shuō),其本身沒(méi)有build文件,所以并不好去修改路徑,當(dāng)然貌似也可以去手動(dòng)創(chuàng)建以個(gè)build文件,在里面進(jìn)行手動(dòng)編輯,這樣肯定是會(huì)比較麻煩的。
我在遇到這個(gè)問(wèn)題的時(shí)候,在網(wǎng)上搜集了很多辦法,大多數(shù)都是以修改2.0的build文件中的路徑為主。
后來(lái)終于找到一種解決辦法,而且只加了一行代碼.
解決辦法
就是在vue.config.js文件中加一個(gè)基本路徑
baseUrl: './',
首先,這句話的意思就是讓打包后(npm run build )的index.html去找相對(duì)路徑下的css和js文件。
一般而言,打包后的文件都在dist文件下,index.html與js和css處于同一級(jí)目錄下,這樣設(shè)置路徑之后就會(huì)使得index直接去同級(jí)目錄下去檢索.
而在不這樣設(shè)置的情況下,會(huì)默認(rèn)去讀取絕對(duì)根目錄下的文件,css和js一般不在根目錄下,而是與index.html同級(jí),找不到樣式便不能加載頁(yè)面樣式,這也是出現(xiàn)空白的原因所在。
再看看3.0的文件夾結(jié)構(gòu)
3.0的腳手架,雖然沒(méi)有了2.0的build和config文件,卻有了一個(gè)vue.config.js文件,利用這個(gè)文件,很多的東西都在這里可以配置,其實(shí)進(jìn)一步提升了在vue腳手架中的配置設(shè)置。
怎么寫這個(gè)文件呢?
附一下vue.config.js的文件語(yǔ)法:
module.exports = {
// 基本路徑
baseUrl: '/',
// 輸出文件目錄
outputDir: 'dist',
// eslint-loader 是否在保存的時(shí)候檢查
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 配置項(xiàng)
// https://vue-loader.vuejs.org/en/options.html
vueLoader: {},
// 生產(chǎn)環(huán)境是否生成 sourceMap 文件
productionSourceMap: true,
// css相關(guān)配置
css: {
// 是否使用css分離插件 ExtractTextPlugin
extract: true,
// 開啟 CSS source maps?
sourceMap: false,
// css預(yù)設(shè)器配置項(xiàng)
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 插件相關(guān)配置
// see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
pwa: {},
// webpack-dev-server 相關(guān)配置
devServer: {
open: process.platform === 'darwin',
host: '0.0.0.0',
port: 8080,
https: false,
hotOnly: false,
proxy: null, // 設(shè)置代理
before: app => {}
},
// 第三方插件配置
pluginOptions: {
// ...
}
}
貼一張我在項(xiàng)目中的用例:
這是可以成功部署到nginx中的項(xiàng)目配置寫法,其中用到了基本路徑和后臺(tái)代理等相關(guān)配置。

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue.js與后臺(tái)數(shù)據(jù)交互的實(shí)例講解
今天小編就為大家分享一篇vue.js與后臺(tái)數(shù)據(jù)交互的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
vue3+vite2中使用svg的方法詳解(親測(cè)可用)
vue2的時(shí)候使用的是字體圖標(biāo),缺點(diǎn)就是比較單一,到了vue3,相信瀏覽器的性能起來(lái),所以這里記錄一下,下面這篇文章主要給大家介紹了關(guān)于vue3+vite2中使用svg的相關(guān)資料,需要的朋友可以參考下2022-08-08
Vue data的數(shù)據(jù)響應(yīng)式到底是如何實(shí)現(xiàn)的
這篇文章主要介紹了Vue data的數(shù)據(jù)響應(yīng)式到底是如何實(shí)現(xiàn)的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
vue與TypeScript集成配置最簡(jiǎn)教程(推薦)
本篇文章主要介紹了vue與TypeScript集成配置最簡(jiǎn)教程(推薦),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
vue實(shí)現(xiàn)滾動(dòng)底部加載下一頁(yè)指令的示例代碼
vue中監(jiān)控滾動(dòng)事件可以直接在mounted中綁定滾動(dòng)事件,然后在銷毀前解綁滾動(dòng)事件,本文通過(guò)實(shí)例代碼介紹vue實(shí)現(xiàn)滾動(dòng)底部加載下一頁(yè)指令的過(guò)程,感興趣的朋友跟隨小編一起看看吧2023-10-10
vue2中的keep-alive使用總結(jié)及注意事項(xiàng)
vue2.0提供了一個(gè)keep-alive組件用來(lái)緩存組件,避免多次加載相應(yīng)的組件,減少性能消耗。本文給大家介紹vue2中的keep-alive使用總結(jié)及注意事項(xiàng),需要的朋友參考下吧2017-12-12
vue中使用element ui的input框?qū)崿F(xiàn)模糊搜索的輸入框
這篇文章主要介紹了vue中使用element ui的input框?qū)崿F(xiàn)模糊搜索的輸入框,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11

