我最近升级到webpack4。该页面已成功加载,只要发生更改,它就会使用webpack-dev-server自动刷新该页面。效果很好,但在控制台中显示以下错误
获取http://localhost:8090/build/bundle.js 404(未找到)
有时候,URL中一旦有ID,就会将该ID附加到如下所示的捆绑js URL中
我尝试了很多方法来使用Stack Overflow答案和GitHub解决方案,但是没有一个对我有用。以下是模块详细信息
“ webpack”:“ ^ 4.15.0”, “ webpack-cli”:“ ^ 3.0.8”, “ webpack-dev-server”:“ ^ 3.1.4”, “ babel-core”:“ ^ 6.26.3”, “ babel-loader”:“ ^ 7.1.5”, “ babel-plugin-transform-class-properties”:“ ^ 6.24.1”, “ babel-plugin-transform-object-rest-spread”:“ ^ 6.26.0”, “ babel-polyfill”:“ ^ 6.26.0”, “ babel-preset-env”:“ ^ 1.7.0”, “ babel-preset-react”:“ ^ 6.24.1”
webpack.config.js:
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const CompressionPlugin = require("compression-webpack-plugin");
const webpack = require('webpack');
module.exports = {
target: "web",
entry: [
"whatwg-fetch",
'webpack-dev-server/client?http://localhost:8090',
'webpack/hot/only-dev-server',
'babel-polyfill',
"./src/index.js"
],
output: {
path: path.resolve(__dirname, "build"),
filename: "bundle.js",
publicPath: "/"
//make sure port 8090 is used when launching webpack-dev-server
},
plugins: [new HtmlWebpackPlugin({
template: "index.html"
}),
new CompressionPlugin({
asset: "[path].gz[query]",
algorithm: "gzip",
test: /\.js$|\.jsx$|\.css$|\.html$/,
threshold: 10240,
minRatio: 0.8
}),
new webpack.HotModuleReplacementPlugin(),
// enable HMR globally
new webpack.NoEmitOnErrorsPlugin(),
new webpack.ProvidePlugin({
jQuery: 'jquery',
$: 'jquery',
jquery: 'jquery'
})
],
module: {
rules: [
{
//tell webpack to use jsx-loader for all *.jsx files
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: "babel-loader"
},
{
test: /\.css$/,
loader: "style-loader!css-loader"
},
{
test: /\.(png|jpg|jpeg|gif|woff|woff2|svg)$/,
loader: 'url-loader?limit=100000'
},
{
test: /\.(eot|ttf)$/,
loader: "file-loader"
},
{
test: /\.html$/,
exclude: /node_modules/,
loader: 'html-loader'
},
{
test: /\.scss$/,
loaders: ["style-loader", "css-loader", "sass-loader"]
}
]
},
resolve: {
modules: [
path.resolve("./src"),
path.resolve("./node_modules")
],
extensions: [".js", ".jsx"]
},
devServer: {
watchOptions: {
// Needed for Windows Subsystem for Linux dev environment:
poll: true
},
contentBase: "/build"
},
devtool: "cheap-module-eval-source-map",
node: {
child_process : "empty",
fs: "empty"
}
};
我的index.html位于根目录
index.html
<html>
<head>
<link href="https://fonts.googleapis.com/css?family=Cabin+Sketch" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
<div id="App">
<!-- this is where the root react component will get rendered -->
</div>
<script type="text/javascript" src="./build/bundle.js"></script></body>
</html>
答案 0 :(得分:2)
经过所有与此问题相关的github答案后,我找到了答案。最后,我终于在index.html
中找出了问题所在。问题主要是指向index.html中的bundle js。找不到webpack bundle.js的原因,因为我在index.html中指定了错误的路径。
下面的一个解决了我的问题。
<script src="/bundle.js"></script>