无效的配置对象。 Webpack 已使用与 API 模式不匹配的配置对象初始化

我有这个简单的 helloworld 反应应用程序从一个在线课程创建,但我得到了这个错误:

无效的配置对象。 Webpack 已使用 与 API 架构不匹配的配置对象。 - configuration 有一个未知属性‘ postcss’。这些属性是有效的:?保释?缓存?来龙去脉?依赖?, DevServer? ,devtool? ,条目,外部设备? ,加载程序? ,模块? ,名称? , 节点? ,输出? ,性能? ,插件? ,配置文件? ,记录 InputPath? , 解析? ,解析装载器? ,统计? , 对于拼写错误: 请更正。
对于加载程序选项: webpack 2不再允许 配置。 应该更新加载程序,以允许通过 module.rules 中的加载程序选项传递选项。 在加载程序更新之前,可以使用 LoaderOptionsPlugin 将这些选项传递给加载程序: 插件: [ 新的网络包 //test:/. xxx $/,//可能仅对某些模块应用此方法 选择: { 邮政编码: ..。 } }) ] - configation.decision 有一个未知属性‘ root’。这些属性是有效的: object { alias? ,aliasFields? , CachePredicate? ,descriptionFiles? ,enforceExtension? , ,扩展名,文件系统,主域, 主文件? ,模块扩展? ,模块? ,插件? ,解析器? , 符号链接? ,unsafeCache? ,useSyncFileSystemCall? } 扩展[0]不应该为空。

我的网络包文件是:

// work with all paths in a cross-platform manner
const path = require('path');


// plugins covered below
const { ProvidePlugin } = require('webpack');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');


// configure source and distribution folder paths
const srcFolder = 'src';
const distFolder = 'dist';


// merge the common configuration with the environment specific configuration
module.exports = {


// entry point for application
entry: {
'app': path.join(__dirname, srcFolder, 'ts', 'app.tsx')
},


// allows us to require modules using
// import { someExport } from './my-module';
// instead of
// import { someExport } from './my-module.ts';
// with the extensions in the list, the extension can be omitted from the
// import from path
resolve: {
// order matters, resolves left to right
extensions: ['', '.js', '.ts', '.tsx', '.json'],
// root is an absolute path to the folder containing our application
// modules
root: path.join(__dirname, srcFolder, 'ts')
},


module: {
loaders: [
// process all TypeScript files (ts and tsx) through the TypeScript
// preprocessor
{ test: /\.tsx?$/,loader: 'ts-loader' },
// processes JSON files, useful for config files and mock data
{ test: /\.json$/, loader: 'json' },
// transpiles global SCSS stylesheets
// loader order is executed right to left
{
test: /\.scss$/,
exclude: [path.join(__dirname, srcFolder, 'ts')],
loaders: ['style', 'css', 'postcss', 'sass']
},
// process Bootstrap SCSS files
{
test: /\.scss$/,
exclude: [path.join(__dirname, srcFolder, 'scss')],
loaders: ['raw', 'sass']
}
]
},


// configuration for the postcss loader which modifies CSS after
// processing
// autoprefixer plugin for postcss adds vendor specific prefixing for
// non-standard or experimental css properties
postcss: [ require('autoprefixer') ],


plugins: [
// provides Promise and fetch API for browsers which do not support
// them
new ProvidePlugin({
'Promise': 'es6-promise',
'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch'
}),
// copies image files directly when they are changed
new CopyWebpackPlugin([{
from: path.join(srcFolder, 'images'),
to: path.join('..', 'images')
}]),
// copies the index.html file, and injects a reference to the output JS
// file, app.js
new HtmlWebpackPlugin({
template: path.join(__dirname, srcFolder, 'index.html'),
filename:  path.join('..', 'index.html'),
inject: 'body',
})
],


// output file settings
// path points to web server content folder where the web server will serve
// the files from file name is the name of the files, where [name] is the
// name of each entry point
output: {
path: path.join(__dirname, distFolder, 'js'),
filename: '[name].js',
publicPath: '/js'
},


// use full source maps
// this specific setting value is required to set breakpoints in they
// TypeScript source in the web browser for development other source map
devtool: 'source-map',


// use the webpack dev server to serve up the web application
devServer: {
// files are served from this folder
contentBase: 'dist',
// support HTML5 History API for react router
historyApiFallback: true,
// listen to port 5000, change this to another port if another server
// is already listening on this port
port: 5000,
// proxy requests to the JSON server REST service
proxy: {
'/widgets': {
// server to proxy
target: 'http://0.0.0.0:3010'
}
}
}


};
415511 次浏览

我想你的 webpack 版本是2.2.1。我认为你应该使用这个迁移指南—— > https://webpack.js.org/guides/migrating/

此外,您可以使用 TypeScript + Webpack 2的这个示例。

我不知道是什么引起的,但我用这种方法解决。
重新安装整个项目,但请记住,webpack-dev-server 必须在全局范围内安装。我查看了一些服务器错误,比如找不到 Webpack,所以我使用 link 命令链接 Webpack。在输出中解决一些绝对路径问题。

在 devServer object: inline: false

Webpack.config.js

module.exports = {
entry: "./src/js/main.js",
output: {
path:__dirname+ '/dist/',
filename: "bundle.js",
publicPath: '/'
},
devServer: {
inline: false,
contentBase: "./dist",
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude:/(node_modules|bower_components)/,
loader: 'babel-loader',
query: {
presets: ['es2015', 'react']
}
}
]
}


};

包裹 Json

{
"name": "react-flux-architecture-es6",
"version": "1.0.0",
"description": "egghead",
"main": "index.js",
"scripts": {
"start": "webpack-dev-server"
},
"repository": {
"type": "git",
"url": "git+https://github.com/cichy/react-flux-architecture-es6.git"
},
"keywords": [
"React",
"flux"
],
"author": "Jarosław Cichoń",
"license": "ISC",
"bugs": {
"url": "https://github.com/cichy/react-flux-architecture-es6/issues"
},
"homepage": "https://github.com/cichy/react-flux-architecture-es6#readme",
"dependencies": {
"flux": "^3.1.2",
"react": "^15.4.2",
"react-dom": "^15.4.2",
"react-router": "^3.0.2"
},
"devDependencies": {
"babel-core": "^6.22.1",
"babel-loader": "^6.2.10",
"babel-preset-es2015": "^6.22.0",
"babel-preset-react": "^6.22.0"
}
}

尝试以下步骤:

npm uninstall webpack --save-dev

然后是

npm install webpack@2.1.0-beta.22 --save-dev

然后你应该可以再次吞咽。为我修复的问题。

我也遇到过同样的问题,我通过安装最新的 npm 版本解决了这个问题:

npm install -g npm@latest

然后改变 webpack.config.js文件来解决

扩展[0]不应该为空。

现在解决延期应该是这样的:

resolve: {
extensions: [ '.js', '.jsx']
},

然后运行 npm start

在将 webpack 引入到我用 npm init 创建的项目时,我得到了相同的错误消息。

无效的配置对象。 Webpack 已使用与 API 模式不匹配的配置对象初始化。 - configation.output.path: 提供的值“ dist/asset”不是绝对路径!

我重新开始使用纱线,为我解决了这个问题:

brew update
brew install yarn
brew upgrade yarn
yarn init
yarn add webpack webpack-dev-server path
touch webpack.config.js
yarn add babel-loader babel-core babel-preset-es2015 babel-preset-react --dev
yarn add html-webpack-plugin
yarn start

我发现以下链接很有帮助: 使用 webpack 和 Babel 建立一个反应环境

我和你犯了同样的错误。

Npm 卸载 webpack —— save-dev

&

Npm install webpack@2.1.0-beta.22—— save-dev

解决它。

当我使用 path.Resol()设置“ entry”和“ output”设置时,就会发生这个错误。 试试 entry: __dirname + '/app.jsx'

我通过从解析数组中删除空字符串解决了这个问题。

//Doesn't work
module.exports = {
resolve: {
extensions: ['', '.js', '.jsx']
}
...
};


//Works!
module.exports = {
resolve: {
extensions: ['.js', '.jsx']
}
...
};

对于像我这样的人,谁最近开始: loaders关键字是 取代rules; 即使它仍然代表加载程序的概念。因此,我的 webpack.config.js,作为一个 React 应用程序,如下所示:

var webpack = require('webpack');
var path = require('path');


var BUILD_DIR = path.resolve(__dirname, 'src/client/public');
var APP_DIR = path.resolve(__dirname, 'src/client/app');


var config = {
entry: APP_DIR + '/index.jsx',
output: {
path: BUILD_DIR,
filename: 'bundle.js'
},
module : {
rules : [
{
test : /\.jsx?/,
include : APP_DIR,
loader : 'babel-loader'
}
]
}
};


module.exports = config;

只需在“ webpack.config.js”中将“ loader”更改为“ rules”即可

因为加载程序在 Webpack1中使用,而规则在 Webpack2中使用。 你可以看到有 分歧

在 webpack.config.js 中,将加载程序: [ . . ]替换为规则: [ . . ] 这招对我很管用。

Webpack 的配置文件在过去几年中发生了变化(可能随着每个主要版本的发布而变化):

为什么我会得到这个错误

Invalid configuration object. Webpack has been initialised using a
configuration object that does not match the API schema

是因为配置文件与所使用的 webpack 版本不匹配。

接受的答案没有说明这一点,其他答案也暗示了这一点,但是不要清楚地说明 Npm install webpack@2.1.0-beta.22只需在“ webpack.config.js”中将“ loader”更改为“ rules”即可这个。 所以我决定给出我对这个问题的答案。

卸载和重新安装 webpack,或者使用 webpack 的全局版本都不能解决这个问题

如果在使用全局版本时解决了这个问题,这可能意味着您的全局版本是“旧的”,而您使用的 webpack.config.js 文件格式是“旧的”,因此 很吻合和中提琴 现在一切都好了。我完全赞成有效的方法,但是希望读者知道它们为什么有效。

每当你得到一个你希望能够解决你的问题的 webpack 配置时,问问你自己这个配置是用于什么版本的 webpack。

有很多学习 webpack 的好资源,其中包括:

有很多很好的资源学习 webpack4的例子,请添加评论,如果你知道其他人。希望未来的 webpack 文章能够说明使用/解释的版本。

它的工作原理是使用 rules而不是 loaders

module : {
rules : [
{
test : /\.jsx?/,
include : APP_DIR,
loader : 'babel-loader'
}
]
}

我改变了 装载机规矩webpack.config.js文件和更新的包 html-webpack-pluginwebpackwebpack-cliwebpack-dev-server到最新的版本,然后它为我工作!

这个错误通常发生在有冲突版本(角 js)的情况下。所以 webpack 无法启动应用程序。您可以简单地通过删除 webpack 并重新安装来修复它。

npm uninstall webpack --save-dev
npm install webpack --save-dev

重新启动应用程序,一切正常。

我希望能够帮助别人。干杯

在我的例子中,问题是包含项目的文件夹的名称,其中有一个标志“ !”我只是重命名了文件夹,一切都准备好了。

我也有同样的问题,对我来说,我只需要做好事就行了

读取错误信息..。

我的错误消息说:

无效的配置对象。 Webpack 已使用与 API 模式不匹配的配置对象初始化。 - 配置-条目应该是这样的: 返回文章页面函数 | 对象{ : 非空字符串 | [非空字符串]} | 非空字符串 | [非空字符串]译者: - > 汇编的入口点。 详情: Entry 应该是 function 的一个实例 函数返回一个条目对象,一个条目字符串,一个条目数组或者一个承诺。 Entry [‘ styles’]应该是一个字符串。 字符串解析为一个模块,该模块在启动时加载。 * < strong > configation.entry [‘ style’]不应该包含项目‘ C: MojiFajlovi Faks 11Master 1Semestar UDD-UpavljanjeDigitalnimDokumentima Projekat Nc-front node _ module 引导 dist css bootstrap.min.css’两次。

正如粗体的错误消息行所说,我刚刚打开了 angular.json文件,发现 styles看起来是这样的:

"styles": [
"./node_modules/bootstrap/dist/css/bootstrap.min.css",
"src/styles.css",
"node_modules/bootstrap/dist/css/bootstrap.min.css" <-- **marked line**
],

所以我把 标记线移除了。

一切都很顺利

我也有同样的问题,我通过在 web.config.js 文件中做一些更改来解决这个问题。仅供参考,我使用的是最新版本的 webpack 和 webpack-cli。这个魔术救了我一命。我已经附上了我的 web.config.js 文件在版本之前和之后的示例。

以前:

module.exports = {
resolve: {
extensions: ['.js', '.jsx']
},
entry: './index.js',
output: {
filename: 'bundle.js'
},
module: {
loaders : [
{ test: /\.js?/, loader: 'babel-loader', exclude: /node_modules/ }
]
}
}

之后: 我刚刚在模块对象中将 装载机替换为 规矩,正如您可以在我的代码片段中看到的。

module.exports = {
resolve: {
extensions: ['.js', '.jsx']
},
entry: './index.js',
output: {
filename: 'bundle.js'
},
module: {
rules : [
{ test: /\.js?/, loader: 'babel-loader', exclude: /node_modules/ }
]
}
}

希望这将有助于某人摆脱这个问题。

我有 webpack 版本3,所以我安装了 webpack-dev-server 版本2.11.5根据当前的 https://www.npmjs.com/package/webpack-dev-server“版本”页面。然后问题就解决了。

enter image description here

使用不同的语法(标志...) ,可能导致这个问题从一个版本到另一个在 webpack (3,4,5...) ,你必须阅读新的 webpack 配置更新和废弃的功能。

对我来说,我必须改变:

cheap-module-eval-source-map

致:

eval-cheap-module-source-map

V4V5的细微差别。

不太可能的情况。

我已经删除了引用旧版本 webpack 的 yarn.lock文件。

因此,可以检查 yarn.lock文件中的差异。

如果您来自单一 SPA 世界,并且遇到此错误。我意识到这个问题是由为应用程序服务的脚本引起的。

例如:

"scripts": {
"start": "ng serve",
"serve:single-spa:play": "ng s --project play --disable-host-check --port 4202 --deploy-url http://localhost:4202/ --live-reload false"
},

为此,请将开始脚本更改为下面的脚本:

"scripts": {
"start": "npm run serve:single-spa:play",
"serve:single-spa:play": "ng s --project play --disable-host-check --port 4202 --deploy-url http://localhost:4202/ --live-reload false"
},

检查 webpacker.yml 中的 source_path。我在一个项目中遇到了同样的错误,其中 webpacker.yml 是从另一个项目复制过来的。它应该指向包含 Pack 目录的目录。

使用 npm i -S webpack@latest安装 "webpack": "^5.41.1"将解决这个问题。

在我的案例中,这是由于从另一个项目中复制 webpack.js 而没有改变“ entry”和“ output”路径以匹配新的项目结构造成的。一旦我修好了路径,一切又恢复正常了。

试试这一段,规则必须是一个列表或者数组什么的..。

module:{
rules:[
{
test:/\.js$/,
exclude: /node_modules/,
use:{
loader:'babel-loader'
},
}
]
}

如果在将角度版本从11迁移到12并使用单个 spa 后遇到此错误,

然后您可以为下面的包配置“ package.json”

"single-spa": "^5.9.3"

"single-spa-angular": "^5.0.2"

@angular-builders/custom-webpack": "^12.1.3"

"webpack": "^5.70.0"

npm install之后

我在试图将 WebPack5与 Cypress 和 Cucumber (基于此示例 https://github.com/TheBrainFamily/cypress-cucumber-webpack-typescript-example)一起使用时遇到了这个问题。把 index.js 插件改成这个对我来说很有用!

const browserify = require('@cypress/browserify-preprocessor');
const cucumber = require('cypress-cucumber-preprocessor').default;


module.exports = (on, config) => {
const options = {
...browserify.defaultOptions,
typescript: require.resolve('typescript'),
};


on('file:preprocessor', cucumber(options));
on('task', {
log(message) {
console.log(message)


return null
},
})
};

只需要安装 npm 使用以下命令:

npm install webpack

如果 webpack 没有在全球范围内安装,那么使用以下命令来安装它:

npm install webpack -g

如果您正在使用与 Monorepo 支持和创建反应应用程序的 Expo 46,webpack 版本是不同的。它不能正确处理传递,所以你必须在你的世博会应用程序项目中明确添加版本。

yarn add --dev webpack-dev-server@3.11 webpack@4.43 webpack-manifest-plugin@2.2