vue/cli3.0腳手架部署到nginx時(shí)頁面空白的問題及解決
明確一下問題
vue/cli3.0部署到nginx出現(xiàn)頁面白屏,不能正常顯示網(wǎng)頁內(nèi)容,利用F12,經(jīng)過初步判斷,是路徑設(shè)置問題。
對(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腳手架中沒有build和config文件,在往nginx中部署2.0時(shí),我們可以通過修改build和config中的路徑,就可以成功用nginx訪問,但對(duì)于3.0來說,其本身沒有build文件,所以并不好去修改路徑,當(dāng)然貌似也可以去手動(dòng)創(chuàng)建以個(gè)build文件,在里面進(jìn)行手動(dòng)編輯,這樣肯定是會(huì)比較麻煩的。
我在遇到這個(gè)問題的時(shí)候,在網(wǎng)上搜集了很多辦法,大多數(shù)都是以修改2.0的build文件中的路徑為主。
后來終于找到一種解決辦法,而且只加了一行代碼.
解決辦法
就是在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í),找不到樣式便不能加載頁面樣式,這也是出現(xiàn)空白的原因所在。
再看看3.0的文件夾結(jié)構(gòu)
3.0的腳手架,雖然沒有了2.0的build和config文件,卻有了一個(gè)vue.config.js文件,利用這個(gè)文件,很多的東西都在這里可以配置,其實(shí)進(jìn)一步提升了在vue腳手架中的配置設(shè)置。
怎么寫這個(gè)文件呢?
附一下vue.config.js的文件語法:
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項(xiàng)目base64加解密使用方式以及解密亂碼
這篇文章主要介紹了vue項(xiàng)目base64加解密使用方式以及解密亂碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05vue學(xué)習(xí)筆記五:在vue項(xiàng)目里面使用引入公共方法詳解
這篇文章主要介紹了在vue項(xiàng)目里面使用引入公共方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04element-ui使用導(dǎo)航欄跳轉(zhuǎn)路由的用法詳解
今天小編就為大家分享一篇element-ui使用導(dǎo)航欄跳轉(zhuǎn)路由的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08使用vue-i18n?入口文件配置控制臺(tái)報(bào)警問題解決
這篇文章主要介紹了使用vue-i18n?入口文件配置控制臺(tái)報(bào)警問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06vue+uniapp瀑布流布局多種實(shí)現(xiàn)方式示例代碼
由于使用uniapp開發(fā)的微信小程序不需要考慮響應(yīng)式,因此瀑布流的實(shí)現(xiàn)相對(duì)于pc端更為簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于vue+uniapp瀑布流布局多種實(shí)現(xiàn)方式的相關(guān)資料,需要的朋友可以參考下2023-03-03前端Vue數(shù)據(jù)不更新問題的深入分析與解決方案
在前端開發(fā)中,Vue.js 是一個(gè)非常流行的 JavaScript 框架,它以其簡(jiǎn)潔的語法和強(qiáng)大的響應(yīng)式系統(tǒng)而聞名,然而,盡管 Vue 的響應(yīng)式系統(tǒng)非常強(qiáng)大,但在實(shí)際開發(fā)中,開發(fā)者仍然可能會(huì)遇到數(shù)據(jù)不更新的問題,本文將深入探討 Vue 數(shù)據(jù)不更新的常見原因,并提供詳細(xì)的解決方案2025-03-03Vue項(xiàng)目中使用jsonp抓取跨域數(shù)據(jù)的方法
這篇文章主要介紹了Vue項(xiàng)目中使用jsonp抓取跨域數(shù)據(jù)的方法,本文通過實(shí)例代碼講解的非常詳細(xì),需要的朋友可以參考下2019-11-11Vue-Cli項(xiàng)目?jī)?yōu)化操作的實(shí)現(xiàn)
這篇文章主要介紹了Vue-Cli項(xiàng)目?jī)?yōu)化操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10