webpack 工作隨筆

應(yīng)用模塊

1、 關(guān)于webpack -- setup

每次在開(kāi)發(fā)webpack項(xiàng)目的時(shí)候 運(yùn)行 npm run dev 其實(shí)是啟動(dòng)了一個(gè)服務(wù)器 服務(wù)器是node代碼書(shū)寫(xiě)

這個(gè)服務(wù)器的運(yùn)行的入口文件是 build/webpack.dev.conf.js

有關(guān)服務(wù)器的配置項(xiàng)是在 devServer 對(duì)象里面的 如下

devServer: {

    clientLogLevel: 'warning',

    historyApiFallback: {

      rewrites: [

        { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },

      ],

    },

    hot: true,

    contentBase: false, // since we use CopyWebpackPlugin.

    compress: true,

    host: HOST || config.dev.host,

    port: PORT || config.dev.port,

    open: config.dev.autoOpenBrowser,

    overlay: config.dev.errorOverlay

      ? { warnings: false, errors: true }

      : false,

    publicPath: config.dev.assetsPublicPath,

    proxy: config.dev.proxyTable,

    quiet: true, // necessary for FriendlyErrorsPlugin

    watchOptions: {

      poll: config.dev.poll,

    },

    setup(app) {

        //  可以通過(guò)express的app  在setup里面寫(xiě)一些自己的中間間  

        // 這樣寫(xiě)的話  項(xiàng)目中發(fā)送ajax請(qǐng)求地址是/some/path 就可以經(jīng)過(guò)這里做一些處理

        app.get('/some/path', function (req, res) {

            let url = 'wwwwwwwwwww'    

            axios.get(url, {

                headers: {

                    referer: '',

                    host: ''

                }

                params: req.query

            }).then( (response) => {

                res.json(response.data)

            } )

        });

      })

    }

  }

編譯模塊

1、 讓項(xiàng)目支持es6, es7的新語(yǔ)法

  • babel-loader 轉(zhuǎn)義es6新語(yǔ)法的, 但是它支持的不全, 還需要一些插件來(lái)支持新的api
  • babel-polyfill 支持新的api, 需要全局引用
  • babel-runtime / babel-plugin-transform-runtime 抽離了公共模塊, 避免了重復(fù)引入
  • .babelrc 對(duì)babel進(jìn)行配置 可以局部使用 babel-polyfill(還不知道怎樣個(gè)局部法)
  • 測(cè)試了下, 好像不全局引用 babel-polyfill 也能使用 一些新的語(yǔ)法(后續(xù)待測(cè))
{
 // 配置樣本
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "ie >= 8", "android >= 4.4"]
      }
    }],
    "stage-2"    // 不同的階段 
  ],
  "plugins": ["transform-vue-jsx", "transform-runtime"],
  "env": {
    "test": {
      "presets": ["env", "stage-2"],
      "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"]
    }
  }
}
// 缺啥補(bǔ)啥
 "@babel/preset-env": "^7.1.0",
 "babel-polyfill": "^6.26.0",
 "babel-preset-env": "^1.7.0",
 "babel-preset-stage-2": "^6.24.1",
  • stage 系列集合了一些對(duì) es7 的草案支持的插件,由于是草案,所以作為插件的形式提供。
stage-0 - Strawman: just an idea, possible Babel plugin.
stage-1 - Proposal: this is worth working on.
stage-2 - Draft: initial spec.
stage-3 - Candidate: complete spec and initial browser implementations.
stage-4 - Finished: will be added to the next yearly release.

報(bào)錯(cuò)模塊

  1. [copy-webpack-plugin] unable to locate 'C:\Users\DELL\Desktop\vue-typescript\vue-typescript-starter\static' at 'C:\Users\DELL\Desktop\vue-typescript\vue-typescript-starter\static'
  • 不能定位到某個(gè)文件夾 需要在項(xiàng)目中手動(dòng)新建一個(gè) static的文件夾

  • 原因可能是因?yàn)閟tatic是一個(gè)空文件夾 克隆的時(shí)候或者上傳的時(shí)候 git給過(guò)濾掉了

     但是它又是必須的  所以需要手動(dòng)創(chuàng)建出來(lái)
    

  1. Error: listen EADDRINUSE 127.0.0.1:11001
  • 端口被占用了 改端口吧

  • 原因可能是重復(fù)打包 上一次打包服務(wù)還沒(méi)完全退出導(dǎo)致的


  1. Error in ./src/main.js no-new Do not use 'new' for side effects
  • 如果用了 new Vue({}) new 關(guān)鍵字實(shí)例化一個(gè)對(duì)象 要賦值一個(gè)變量 否則報(bào)錯(cuò)
  • 但是vue 的語(yǔ)法 又不需要去賦值 這是eslint報(bào)的錯(cuò)
// 下句代碼是讓eslint檢測(cè)語(yǔ)法的時(shí)候 跳過(guò)new關(guān)鍵字的檢測(cè)
/* eslint-disable no-new */
new Vue({
    el: 'body',
    components: {App}
})

  1. Resource interpreted as script but transferred with MIME type text/plain.
  • 描述

項(xiàng)目中 打包好的vue-typescript的文件, 放在tomcat上樣式是對(duì)的,但是放到upjax上樣式出錯(cuò) 并報(bào)了如上警告

tomcat服務(wù)器是根據(jù)自己請(qǐng)求的文件類(lèi)型去返回給你的對(duì)應(yīng)的文件類(lèi)型的 而 upjax沒(méi)那么智能, 如果后臺(tái)的filter沒(méi)有判斷完全的話, 返回前臺(tái)的類(lèi)型是不對(duì)的

這個(gè)項(xiàng)目就是后臺(tái)只判斷了type/html, 導(dǎo)致css文件返回的類(lèi)型也是type/html, 表現(xiàn)是瀏覽器中css樣式失效

解決: 后臺(tái)把filter去掉或者就是把類(lèi)型判全, 然后別忘了doFilter放行


  1. node-sass -- XX/node_modules/node-sass: Command failed.
  • 描述

    在項(xiàng)目根目錄下,直接yarn install 或者 npm intall 安裝項(xiàng)目依賴的時(shí)候 , 下載到node-sass 就開(kāi)始報(bào)錯(cuò), 安裝進(jìn)程隨之停止

  • 網(wǎng)上找了 好幾種方法 都么解決問(wèn)題
  • 既然它一直報(bào)錯(cuò), 索性就先不安它, 于是去package.json文件,找到此項(xiàng)依賴, 刪除
  • 然后 yarn install
  • 沒(méi)報(bào)錯(cuò), 安裝完成
  • 然后將剛才刪除的node-sass 項(xiàng)再恢復(fù)
  • 再次yarn install 也沒(méi)報(bào)錯(cuò) 項(xiàng)目還正常運(yùn)行起來(lái)了
  • 不知道怎么為什么, 反正將node-sass單獨(dú)安裝就行了,很奇葩?。?!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 不斷地修行,不斷地提升自己! 今天是一個(gè)特別的日子,為了能符合自己在新一年對(duì)自己的期許,像這樣的時(shí)刻需要記下來(lái); ...
    孜以閱讀 459評(píng)論 0 0
  • 簡(jiǎn)介 好久不上簡(jiǎn)書(shū)了,但是一直關(guān)注簡(jiǎn)書(shū)呢,微博上有很多大神在分享iOS的學(xué)習(xí)知識(shí),真是對(duì)他們很佩服,在春節(jié)期間,他...
    民謠程序員閱讀 355評(píng)論 0 0
  • 第五課作業(yè): 1.讀熟《聲律啟蒙》卷一“一東”、”二冬“部分的第一段后閉卷填空,填完后再對(duì)照原文修改。(要有閉卷填...
    飛古閱讀 281評(píng)論 1 0
  • 早上半夢(mèng)半醒間,經(jīng)歷了人們常說(shuō)的鬼壓床,而且是,兩次,真的很害怕,一個(gè)人躺在自己租住的房間的床上,難過(guò)的想流淚,忽...
    文盲十公子閱讀 585評(píng)論 0 1

友情鏈接更多精彩內(nèi)容