2017-09-18 69 views
7

我試圖用幾種不同的方法解決這個問題,所以我必須從頭開始。webpack-dev-server運行兩次

我有一個名爲webpack.dev.js一個配置文件,如下圖所示:

const path = require("path"); 

const HtmlWebpackPlugin = require("html-webpack-plugin"); 
const ExtractTextPlugin = require("extract-text-webpack-plugin"); 
const CopyWebpackPlugin = require("copy-webpack-plugin"); 

module.exports = { 
    entry: "./src/script.js", 
    output: { 
    filename: "bundle.js", 
    path: path.resolve(__dirname, "dist") 
    }, 

    devtool: "inline-source-map", 
    devServer: { 
    contentBase: path.join(__dirname, "dist") 
    }, 

    module: { 
    rules: [ 
     { 
     test: /\.js$/, 
     exclude: /node_modules/, 
     use: { 
      loader: "babel-loader", 
      options: { 
      presets: ["env"] 
      } 
     } 
     }, 
     { 
     test: /\.scss$/, 
     use: ExtractTextPlugin.extract({ 
      fallback: "style-loader", 
      use: ["css-loader", "postcss-loader", "sass-loader"] 
     }) 
     } 
    ] 
    }, 

    plugins: [ 
    new HtmlWebpackPlugin({template: path.join("src", "index.html")}), 
    new ExtractTextPlugin("style.css"), 
    new CopyWebpackPlugin([{from: "src/images", to: "images"}]) 
    ] 
}; 

所以,我成立的package.json啓動腳本用於啓動開發服務器

"start": "webpack-dev-server --config webpack.dev.js"

現在是問題開始的地方。當我跑了劇本,我有以下錯誤

Invalid configuration object. webpack-dev-server has been initialized using a configuration object that does not match the API schema. 
- configuration has an unknown property 'error'. These properties are valid: 
    object { hot?, hotOnly?, lazy?, bonjour?, host?, allowedHosts?, filename?, publicPath?, port?, socket?, watchOptions?, headers?, clientLogLevel?, overlay?, progress?, key?, cert?, ca?, pfx?, pfxPassphrase?, requestCert?, inline?, disableHostCheck?, public?, https?, contentBase?, watchContentBase?, open?, useLocalIp?, openPage?, features?, compress?, proxy?, historyApiFallback?, staticOptions?, setup?, stats?, reporter?, noInfo?, quiet?, serverSideRender?, index?, log?, warn? } 

正如你所看到的,這個錯誤是非常令人困惑,因爲沒有任何error財產上的配置文件

嘗試不同的方法來後解決這個問題,我試圖刪除devServer屬性,並使用默認設置啓動dev服務器。

但現在是它變得奇怪時。輸出看起來就像如果Web服務器啓動了兩次:

Project is running at http://localhost:8080/ 
webpack output is served from/
Project is running at http://localhost:8081/ 
webpack output is served from/

之後,它會記錄有關有被multiple modules with names that only differ in casing

幾個警告然後一些谷歌上搜索後,我發現了別人也有這個unknown property 'error'問題,他發生的原因是他有http-server在後臺運行。

所以現在,我的理論是,由於某種原因,webpack-dev-server並行運行兩次,並且會產生競爭條件或錯誤,從而引發此unknown property 'error'問題。

我只發現了另外兩個有類似問題的人,他們通過將inject: false添加到HtmlWebpackPlugin的配置對象中而被修復。這樣做並沒有使錯誤消失,並且在沒有devServer配置的情況下運行時,它只是從頁面中刪除所有js和css,因爲它不會將<link><script>標籤注入到html中。

在這一點上,我不知道如何解決這個問題,這就是爲什麼我問是否有人可以幫助我。

+0

我看到一個已經工作好幾個月的現有項目的同樣的事情。一位同事正在試圖起牀並運行,並且正在用這種短暫的'錯誤'屬性來解決這個問題。它沒有任何意義,因爲我們在docker中運行所有的東西,我們使用npm-shrinkwrap ...因此他具有與其他人相同的環境。確認他與團隊的其他成員擁有相同的webpack和webpack-dev-server版本...... – Ghazgkull

+0

獲得同樣的結果。也許它與最新版本有關? –

+0

同樣的錯誤今天開始發生在我身上。 – corsen

回答

1

在您的項目文件夾中,運行npm uninstall webpack-dev-server

我在新項目上遇到了同樣的問題,webpack-dev-server v2.9.1,同時運行兩臺服務器。我意識到我已經安裝了webpack-dev-server軟件包兩次,其中一個在我的項目文件夾node_modules中,因爲它在我的package.json中被列爲依賴項,另一個在全局安裝,所以我只是刪除了本地項。

我已經提交了一個問題: https://github.com/webpack/webpack-dev-server/issues/1125

+0

我也有這個v2.9.1,但沒有webpack-dev-server是全球性的。我認爲這裏可能會有更多的問題。 –

2

似乎與webpack-dev-server版本2.8.0有關。

我解決了問題,降級到版本〜2.7.0(2.7.1)。

+1

降級不是解決方案。這是一個繃帶。 – shellscape

+0

爲我工作,感謝您的臨時解決方案! –

0

我也不得不做以下獲得除了這個工作通過NPM卸載devserver。

  1. 手動從節點模塊中刪除webpack-dev-server文件夾。
  2. 運行npm init。

不可否認的是,黑魔法,但一旦這樣做了它的生命 - 花了2個小時對此非常感謝OP指出,開發服務器運行兩次。