我试图在webpack配置中处理开发和生产变量(请参阅https://webpack.js.org/guides/production/),但是它失败了
WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
- configuration should be an object.package.json
{
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "./node_modules/.bin/webpack",
"start": "npm run build && node server.js"
},
"devDependencies": {
//...
"webpack": "^4.20.2",
"webpack-cli": "^3.1.2",
"webpack-dev-middleware": "^3.4.0",
"webpack-hot-middleware": "^2.24.2"
}
}webpack.config.js
const path = require('path'),
webpack = require('webpack'),
HtmlWebpackPlugin = require('html-webpack-plugin');
let config = {
entry: {
app: [
'./src/app/App.tsx', 'webpack-hot-middleware/client'
],
vendor: ['react', 'react-dom']
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'js/[name].bundle.js'
},
// ...
}此导出正在按预期工作,没有错误或警告。
module.exports = config; // everything is fine但这是失败的
module.exports = function(env, argv) { // this errors
return config;
};这里有一个类似但未回答的问题:webpack base config as a function doesn't work
这是一种非常神秘的行为,感谢任何人能帮忙!
发布于 2018-10-02 15:07:04
嗯,它起作用了。我没有注意到错误发生在代码的一个完全不同的位置。
我和webpack和特快专递一起做了一本关于HMR的教程。A这是快速设置中的代码行,它造成了麻烦:
server.js
const webpackConfig = require('./webpack.config');
const compiler = webpack(webpackConfig);
//...
app.use(
require('webpack-dev-middleware')(compiler, {
noInfo: true,
publicPath: webpackConfig.output.publicPath
})
);webpackConfig只得到一个函数而不被调用,所以它不会返回一个对象。所以加括号才能让它起作用。
const webpackConfig = require('./webpack.config')();
//..发布于 2020-01-13 17:45:52
文档有点古怪。您正确地忘记了从package.json设置env变量
例如,"start": "webpack --env.prod --", in package.json将传递{prod: true}作为env变量。
希望这能有所帮助。
https://stackoverflow.com/questions/52594167
复制相似问题