当前位置: 首页 > 后端技术 > Node.js

Nuxt.js踩坑指南(常见问题汇总)

时间:2023-04-03 13:19:16 Node.js

鏈枃浼氫笉瀹氭湡鏇存柊鎬荤粨nuxt.js閬囧埌鐨勯棶棰樸€傝浆杞借娉ㄦ槑鍑哄锛屽皧閲嶄綔鑰咃紝璋㈣阿锛佹敞锛氱増鏈负1.0+锛岄€傜敤浜庝綆鐗堟湰nuxt鎸囧崡锛?.0+浠ヤ笂涓嶉€氱敤銆傚己鐑堟帹鑽愪綔鑰呮枃妗g増鐨勮俯鍧戞敾鐣ワ紝鐐瑰嚮璺宠浆馃憠韪╁潙鏀荤暐Nuxt鐨勫畼鏂规枃妗d腑锛屼腑鏂囨枃妗e拰鑻辨枃鏂囨。鏈変笉灏忕殑鍖哄埆銆?銆佽矾寰勫尮閰嶉棶棰橈細鍦∟uxt.js涓紝璺緞鍖归厤鏄繖鏍风殑锛欯importurl('~assets/css/style.css')//Error杩欎釜璺緞鍖归厤鏄敊璇殑锛岃繖鏍峰啓鏄彲浠ョ殑锛欯importurl('~/assets/css/style.css')//鎴愬姛涔熷氨鏄鍦ㄦ渶鏂扮殑鐗堟湰鏇存柊涓紝瀹樻柟淇浜嗚矾寰勫尮閰嶉棶棰橈細瀹樻柟鎺ㄨ崘浣跨敤~/assets鏉ュ尮閰嶈矾寰勶紝鑰屼笉鏄湪涓枃鏂囨。涓娇鐢╥n~assets鏉ュ尮閰嶈矾寰勩€傚湪涓枃鏂囨。涓紝娌℃湁閽堝姝ら棶棰樼殑淇鎴栨洿鏀广€?.鎸夐渶浠嬬粛锛圲I妗嗘灦绛夛級姣斿浣跨敤UI妗嗘灦锛歟lement-ui鎵句簡寰堝鐩稿叧鏂囩珷锛屽苟娌℃湁鍏蜂綋璇存槑濡備綍浠嬬粛銆傛墍浠ユ兂鎶婂畠鎷垮嚭鏉ヨ鏄庝竴涓嬶細鍏堢湅涓€涓嬶紝濡傛灉涓嶆寜闇€瀵煎叆vendor.js锛屼綋绉ぇ灏忎负锛氱涓€姝ワ紝涓嬭浇渚濊禆锛?涓嬭浇element-uinpminstallelement-ui--save#濡傛灉浣跨敤鎸夐渶瀵煎叆锛屽繀椤诲畨瑁卋abel-plugin-component锛堝畼缃戦渶瑕佷笅杞借鏄庯紝杩欎釜鎻掍欢鏍规嵁瀹樼綉鐨勮鍒欎笉鍚岋紝鎻掍欢鐨勫畨瑁呬篃涓嶅悓锛塶pminstallbabel-plugin-component--save-dev瀹夎瀹屾垚鍚庯紝鎸夌収nuxt.js涓殑瑙勫垯锛岄渶瑕佸湪plugins/鐩綍涓嬪垱寤哄搴旂殑鎻掍欢鏂囦欢銆傚湪鏂囦欢鐨勬牴鐩綍涓嬪垱寤猴紙鎴栧凡缁忓瓨鍦級plugins/鐩綍锛屽苟鍒涘缓涓€涓悕涓猴細element-ui.js鐨勬枃浠讹紝鍐呭濡備笅锛歩mportVuefrom'vue'import{Button}from'element-ui'//寮曞叆Button鎸夐挳exportdefault()=>{Vue.use(Button)}绗簩姝ュ湪nuxt.config.js涓鍏ユ彃浠讹紝娣诲姞閰嶇疆涓猴細pluginscss:['element-ui/lib/theme-chalk/index.css'],plugins:['~/plugins/element-ui']榛樿鏄細寮€鍚疭SR锛屼娇鐢ㄦ湇鍔$娓叉煋锛屼篃鍙互鎵嬪姩閰嶇疆鍏抽棴SSR锛岄厤缃负锛歝ss:['element-ui/lib/theme-chalk/index.css'],plugins:[{src:'~/plugins/element-ui',ssr:false//鍏抽棴ssr}]绗笁姝ワ紝閰嶇疆nuxt.config.js涓殑babel閫夐」锛屽湪build閫夐」涓厤缃紝瑙勫垯涓哄畼缃戣鍒欙細build:{babel:{//閰嶇疆鎸夐渶瀵煎叆瑙勫垯"plugins":[["component",{"libraryName":"element-ui","styleLibraryName":"theme-chalk"}]]},/***鍦ㄤ繚瀛樻椂杩愯ESLINT*/extend(config,ctx){if(ctx.isClient){config.module.rules.push({enforce:'pre',test:/\.(js|vue)$/,loader:'eslint-loader',exclude:/(node_modules)/})}}}姝ゆ椂锛屾垜浠鍦ㄨ瀵熸墦鍖呭悗鐨勬枃浠跺ぇ灏忥紝濡傚浘鍥句腑锛氭鏃讹紝鎴戜滑鎴愬姛瀹屾垚浜嗘寜闇€瀵煎叆閰嶇疆3銆佸垵濮嬪寲鑴氭墜鏋剁殑閫夋嫨锛氬畼缃戞彁渚涚殑鍒濆鍖栬剼鎵嬫灦鏄細#BasicNuxt.jsprojecttemplatevueinitnuxt/startertemplate鍏跺疄瀹樻柟涔熸彁渚涗簡鏇村鐨勬ā鏉夸緵鎴戜滑浣跨敤锛屾垜灏变笉鍦ㄤ簡涓枃鏂囨。鏈壘鍒拌鏄庯細nuxt/starterBasicNuxt.js椤圭洰妯℃澘nuxt/expressNuxt.js+Expressnuxt/koaNuxt.js+Koa2nuxt/adonuxtNuxt.js+AdonisJSnuxt/microNuxt.js+Micronuxt/nuxtent閫傚悎鍐呭鐨凬uxt.js+閲嶇珯鐨凬uxtent妯″潡锛屾垜浠娇鐢ㄥ熀纭€妯℃澘鍒濆鍖栭」鐩€傞儴缃叉柟寮忎负锛氱涓€姝ワ紝鎵撳寘锛氭墽琛宯pmrunbuild鏃讹紝nuxt浼氳嚜鍔ㄦ墦鍖呯浜屾锛岄€夋嫨瑕侀儴缃茬殑鏂囦欢锛?nuxt鏂囦欢澶筽ackage.json鏂囦欢nuxt.config.js鏂囦欢锛堝鏋滀綘閮ㄧ讲浜嗕竴浜沺roxy锛屼綘闇€瑕佷笂浼犺繖涓枃浠讹紝涓汉寤鸿涓婁紶锛夌涓夋锛屽惎鍔ㄤ綘鐨刵uxt锛堥噸瑕侊級浣跨敤pm2鏉ュ惎鍔ㄤ綘nuxt.jspm2startnpm--name"demo"--runstart杩欓噷锛屾垜鎵惧埌浜嗕竴涓棶棰橈紝濡傛灉浣犵敤鐨勬槸windowserver鏈嶅姟鍣紝鐢╬m2鍚姩鐨勬椂鍊欎細鎶ラ敊锛屾姤閿欏涓嬶細濡傛灉浣犲湪linux鏈嶅姟鍣ㄤ笅鍚姩锛屽悓鏍风殑鍛戒护锛屽悓鏍风殑鎵ц锛屼笉浼氭姤閿欙細杩欓噷浣跨敤LinuxCentOS7銆傛墍浠ヤ釜浜哄缓璁湪浣跨敤鍒濆鍖栨ā鏉挎椂锛岃閫夋嫨express鎴栬€卥oa杩涜鍒濆鍖栥€傚師鍥犲涓嬶細1.浣跨敤鍩虹妯℃澘鍒濆鍖栵紝瑙傚療package.json鐨勫惎鍔ㄦ柟寮忓涓嬶細"scripts":{"dev":"nuxt","build":"nuxtbuild","start":"nuxtstart","generate":"nuxtgenerate","lint":"eslint--ext.js,.vue--ignore-path.gitignore.","precommit":"npmrunlint"}2.浣跨敤express/koa鍒濆鍖栨ā鏉匡紝瑙傚療package.json鐨勫惎鍔ㄦ柟寮忓涓嬶細"scripts":{"dev":"backpackdev","build":"nuxtbuild&&backpackbuild","start":"cross-envNODE_ENV=productionnodebuild/main.js","precommit":"npmrunlint","lint":"eslint--ext.js,.vue--ignore-path.gitignore."}鍦ㄥ惎鍔ㄦ柟闈紝鐩告瘮杈冭€岃█锛屾垜涓汉璁や负express/koa鏇寸伒娲伙紝鐩存帴鍚姩build/鐨刴ain.js鏂囦欢鍚姩璧锋潵姣旇緝鐩磋锛屽叧閿槸鍦╳indowsserver涓嬩篃鍙互杩愯娉ㄦ剰锛氬鏋滀娇鐢╡xpress/koa妯℃澘鍒濆鍖栵紝閮ㄧ讲鏈嶅姟鍣ㄦ椂蹇呴』鍚屾椂涓婁紶build/鐩綍锛侊紒锛?.鍦ㄦ彃浠朵腑鑾峰彇vue缁戝畾銆傛垜浠渶瑕佸湪axios鎻掍欢涓厤缃甃oading鍔犺浇鏁堟灉銆備緥濡傦紝浠lement-ui妗嗘灦涓轰緥锛?.鍒涘缓鎻掍欢鍦ㄦ枃浠舵牴鐩綍涓嬪垱寤猴紙鎴栧凡缁忓瓨鍦級plugins/鐩綍锛屽苟鍦ㄧ洰褰曚笅鍒涘缓涓€涓悕涓猴細axios.js鐨勬枃浠讹紝鍐呭濡備笅锛歩mportVuefrom'vue'varvm=newVue({})//鑾峰彇vue瀹炰緥exportdefaultfunction({$axios,redirect}){$axios.onRequest(config=>{if(process.browser){//鍒ゆ柇鏄惁涓哄鎴风(蹇呭~)vm.$loading();}})$axios.onResponse(response=>{if(process.browser){//鍒ゆ柇鏄惁涓哄鎴风(蹇呴渶鐨勶級璁╄礋杞?vm.$loading锛堬級;load.close锛堬級;}}锛?axios.onError锛坋rror=>{constcode=parseInt锛坋rror.response&&error.response.status锛塱f锛堜唬鐮?==400){redirect('/400')}})}姝e瀹樻柟鎵€璇达紝涓嶉渶瑕佸儚鍘熺敓axios閭f牱杩斿洖涓€涓猚onfig銆?銆侀厤缃畁uxt.config.js鏂囦欢锛屽湪plugins閫夐」涓坊鍔狅細plugins:['~/plugins/axios']娣诲姞modules閫夐」锛屾坊鍔犲涓嬬ず渚嬶細modules:['@nuxtjs/axios']Configure闃叉澶氶噸鎵撳寘锛氬湪build閫夐」涓紙榛樿浼氶厤缃畁uxt.config.js锛夛紝娣诲姞vendor閰嶇疆椤癸細build:{vendor:['axios']}杩欐牱鍔犺浇鏂规硶灏卞彲浠ヨ皟鐢ㄤ娇鐢ㄤ簡蹇箰鍦般€傦紙褰撶劧杩樻湁鍏朵粬璋冪敤vue瀹炰緥鐨勬柟寮忥紝姣忎釜浜虹殑涔犳儻涓嶅悓锛屼娇鐢ㄦ柟寮忎篃涓嶅悓銆傦級浜斻€佸湪Nuxt.js涓厤缃唬鐞嗚В鍐宠法鍩熸垜浠煡閬撳湪vue涓厤缃唬鐞嗘槸闈炲父鏂逛究鐨?cli锛屽彧闇€瑕佸埌config/鐩綍涓嬬殑index.js涓壘鍒皃roxyTable锛屾坊鍔犲嵆鍙€傚湪nuxt涓紝杩橀渶瑕佷慨鏀筺uxt.config.js閰嶇疆鏂囦欢銆?.鍘熸潵閰嶇疆浠g悊鐨勬柟娉曟槸浣跨敤@nuxtjs/axios鍜孈nuxtjs/proxy鏉ヨВ鍐宠法鍩?)銆備笅杞芥彃浠?涓嬭浇鎻掍欢npminstall@nuxtjs/axios@nuxtjs/proxy--save2)銆傞厤缃彃浠跺湪nuxt.config.js涓坊鍔犻厤缃」锛歮odules鍜宲roxy銆俥xportdefault={modules:['@nuxtjs/axios','@nuxtjs/proxy'],proxy:[['/json.html',{target:'http://www.xxxx.com'}]//娉ㄦ剰杩欓噷涔熸槸涓€涓暟缁刔}鎸夌収涓婇潰鐨勬柟娉曪紝浠g悊宸茬粡瀹屾垚锛屽彲浠ヨ繘琛岃法鍩熻姹備簡銆?.绗簩绉嶆柟娉?)鐨勪唬鐞嗛厤缃€備笅杞芥彃浠舵湰娆″彧闇€瑕佷笅杞紷nuxtjs/axios鎻掍欢鍗冲彲銆?涓嬭浇鎻掍欢npminstall@nuxtjs/axios--save2).閰嶇疆鎻掍欢module.exports={modules:['@nuxtjs/axios',],axios:{proxy:true},proxy:{'/api':'http://api.example.com','/api2':'http://api.another-website.com'}}鐗瑰埆娉ㄦ剰锛氭鏃禷xios閫夐」鏄竴涓璞★紙object锛夛紝proxy閫夐」鏄竴涓璞★紙object锛夈€侤nuxtjs/axios閰嶇疆椤筽athRewriteoption(rewrite鍦板潃)濡傛灉閰嶇疆pathRewrite閫夐」锛屽彲浠ヤ娇鐢ㄧ浜岀鍐欐硶锛屽涓嬶細proxy:{'/api/':{target:'http://api.example.com',pathRewrite:{'^/api/':''}}}/api/灏嗚娣诲姞鍒板API绔偣鐨勬墍鏈夎姹備腑銆傚彲浠ヤ娇鐢╬athRewrite閫夐」鍒犻櫎銆傚洜涓哄湪ajaxurl涓姞浜嗗墠缂€/api锛屼絾鏄師鏉ョ殑鎺ュ彛鏄病鏈夎繖涓墠缂€鐨勩€傛墍浠ラ渶瑕侀€氳繃pathRewrite閲嶅啓鍦板潃锛屾妸鍓嶇紑/api鏀规垚/鎴栬€?'銆傚鏋滀綘鑷繁鐨勬帴鍙e湴鍧€鏈?api杩欐牱鐨勯€氱敤鍓嶇紑锛屽彲浠ュ幓鎺塸athRewrite銆俽etry閫夐」锛堣嚜鍔ㄦ嫤鎴け璐ョ殑璇锋眰锛夊彲浠ュ湪axios閫夐」涓厤缃畆etry閰嶇疆椤癸紝鑷姩鎷︽埅澶辫触鐨勮姹傘€傞粯璁や负3娆°€俛xios:{retry:{retries:3}}progress閫夐」锛堝彂鍑鸿姹傛椂鏄剧ず鍔犺浇鏉★級涓嶯uxt.js杩涘害鏉¢泦鎴愶紝鍙戝嚭璇锋眰鏃舵樉绀哄姞杞芥潯銆傦紙浠呭湪娴忚鍣ㄤ笂锛屽姞杞芥爮鍙敤鏃躲€傦級鎮ㄨ繕鍙互浣跨敤杩涘害閰嶇疆涓烘瘡涓姹傜鐢ㄨ繘搴︽爮銆倀his.$axios.$get('URL',{progress:false})baseURL閫夐」锛堟湇鍔″櫒绔粯璁よ姹傚湴鍧€锛変娇鐢ㄥ苟棰勫厛鍒涘缓鏈嶅姟鍣ㄧ璇锋眰鐨勫熀鏈琔RL銆俠rowserBaseURL閫夐」锛堝鎴风榛樿璇锋眰鍦板潃锛夊湪瀹㈡埛绔娇鐢ㄥ苟棰勫厛鍒涘缓璇锋眰鐨勫熀鏈琔RL銆傛湰鏂囧悓姝ユ洿鏂颁簬涓汉鍗氬銆傛湰鏂囧鏈夐敊璇紝璇峰湪涓嬫柟鐣欒█锛屽強鏃舵洿姝o紝璋㈣阿锛?/p>