When I upgrade webpack to 4.0.0-beta.3 and run npx webpack serve
I get this error:
[webpack-cli] Invalid configuration object. Object has been initialized using a configuration object that does not match the API schema.
- configuration has an unknown property 'contentBase'. These properties are valid:
object { bonjour?, client?, compress?, devMiddleware?, firewall?, headers?, historyApiFallback?, host?, hot?, http2?, https?, liveReload?, onAfterSetupMiddleware?, onBeforeSetupMiddleware?, onListening?, open?, port?, proxy?, public?, setupExitSignals?, static?, transportMode?, watchFiles? }
This is my webpack.config.js that works in 3.11.2:
const path = require('path');
const ArcGISPlugin = require("@arcgis/webpack-plugin");
module.exports = {
mode: 'development',
entry: {
main: './app/main.js'
},
plugins: [
new ArcGISPlugin()
],
devServer: {
contentBase: './'
}
}
my devDependencies from package.json:
"devDependencies": {
"@arcgis/webpack-plugin": "^4.18.0",
"dojo-typings": "^1.11.11",
"webpack-cli": "^4.7.2",
"webpack-dev-server": "^4.0.0-beta.3"
How do I need to update my config to get the latest version working? When I take out the dev server object, the server will run, but serve content out of ./public which doesn't exist.
I'm new to webpack, so I'm not yet familiar with the application, config, and requirements.
Exists only in webpack-dev-server. It's only needed if you want to serve static files. For example, you want a folder of mp4 vacation movies to be available for the app, but you don't want to run them through the bundle, because that would be silly.
Use webpack-cli's init command to rapidly generate webpack configuration files for your project requirements, it will ask you a couple of questions before creating a configuration file. npx might prompt you to install @webpack-cli/init if it is not yet installed in the project or globally.
And if I want to use react-hot-loader, is the webpack-dev-server necessary? Nope, it works on top of Webpack's hot module replacement interface. You can create your own 'hot server' if you want.
devServer: {
static: './'
}
I should read the errors more closely. The above object made my config work again.
devServer: {
static: {
directory: path.join(__dirname, "public")
},
compress: true,
port: 3010, // default 8000
},
Use static
instead as contentBase
is deprecated in latest Webpack v5
devServer: {
static: {
directory: path.join(__dirname, "./")
},
Full details: https://webpack.js.org/configuration/dev-server/#devserver
Use static: './directory-name'
instead of contentBase: './directory-name'
Example:
devServer: {
static: './dist'
}
instead of contentBase we are using static
enter code here
const path = require("path");
module.exports = {
entry: "./app/Main.js",
output: {
publicPath: "/",
path: path.resolve(__dirname, "app"),
filename: "bundled.js"
},
mode: "development",
devtool: "source-map",
devServer: {
port: 3000,
static: {
directory: path.join(__dirname, "app")
},
hot: true,
historyApiFallback: { index: "index.html" }
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: "babel-loader",
options: {
presets: ["@babel/preset-react", ["@babel/preset-env", { targets: { node: "12" } }]]
}
}
}
]
}
};
I was using node v18, I removed and installed v16. I then changed the codeBase to static. It worked for me
devServer: { historyApiFallback: true, static: path.resolve(__dirname, './dist'), open: true, compress: true, hot: true, port: 8080, host: 'localhost' },
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With