角度错误:Webpack已经使用一个不匹配API模式的配置对象进行初始化。

3
我在使用Angular 7时遇到了这个错误,今天刚开始出现,真的不知道发生了什么。
我尝试过更新、删除和重新安装所有的包,但是没有运气。
无效的配置对象。Webpack已经使用一个不符合API模式的配置对象进行初始化。
配置项configuration.entry应该是以下之一:function | object { : 非空字符串 | [非空字符串] } | 非空字符串 | [非空字符串] -> 编译的入口点。 详情: - configuration.entry应该是一个函数的实例 -> 返回一个入口对象、入口字符串、入口数组或这些东西的Promise的函数。 - configuration.entry['styles']应该是一个字符串 -> 该字符串解析为在启动时加载的模块。 - configuration.entry['styles']不应该包含两次'C:/node_modules\angular-bootstrap-md\scss\mdb-free.scss'。 - configuration.entry应该是一个字符串 -> 没有名称的入口点。该字符串解析为在启动时加载的模块。 - configuration.entry应该是一个数组:[非空字符串] WebpackOptionsValidationError: 无效的配置对象。Webpack已经使用一个不符合API模式的配置对象进行初始化。
配置项configuration.entry应该是以下之一:function | object { : 非空字符串 | [非空字符串] } | 非空字符串 | [非空字符串] -> 编译的入口点。 详情: - configuration.entry应该是一个函数的实例 -> 返回一个入口对象、入口字符串、入口数组或这些东西的Promise的函数。 - configuration.entry['styles']应该是一个字符串 -> 该字符串解析为在启动时加载的模块。 - configuration.entry['styles']不应该包含两次'C:/node_modules\angular-bootstrap-md\scss\mdb-free.scss'。 - configuration.entry应该是一个字符串 -> 没有名称的入口点。该字符串解析为在启动时加载的模块。 - configuration.entry应该是一个数组:[非空字符串] at webpack (C:/node_modules\webpack\lib\webpack.js:31:9) at Observable.rxjs_1.Observable.obs [as _subscribe] (C:/node_modules@angular-devkit\build-webpack\src\webpack-dev-server\index.js:37:37) at Observable._trySubscribe (C:/node_modules\rxjs\internal\Observable.js:44:25) at Observable.subscribe (C:/node_modules\rxjs\internal\Observable.js:30:22) at C:/node_modules\rxjs\internal\util\subscribeTo.js:22:31 at Object.subscribeToResult (C:/node_modules\rxjs\internal\util\subscribeToResult.js:10:45) at MergeMapSubscriber._innerSub (C:/node_modules\rxjs\internal\operators\mergeMap.js:82:29) at MergeMapSubscriber._tryNext (C:/node_modules\rxjs\internal\operators\mergeMap.js:76:14) at MergeMapSubscriber._next (C:/node_modules\rxjs\internal\operators\mergeMap.js:59:18) at MergeMapSubscriber.Subscriber.next (C:/node_modules\rxjs\internal\Subscriber.js:67:18) at TapSubscriber._next (C:/node_modules\rxjs\internal\operators\tap.js:65:26) at TapSubscriber.Subscriber.next (C:/node_modules\rxjs\internal\Subscriber.js:67:18) at MergeMapSubscriber.notifyNext (C:/node_modules\rxjs\internal\operators\mergeMap.js:92:26) at InnerSubscriber._next (C:/node_modules\rxjs\internal\InnerSubscriber.js:28:21) at InnerSubscriber.Subscriber.next (C:/node_modules\rxjs\internal\Subscriber.js:67:18) at MergeMapSubscriber.notifyNext (C:/node_modules\rxjs\internal\operators\mergeMap.js:92:26)

请检查/审查您的 "angular.json" 文件中的 "styles" 部分。您可能在此部分遇到了一些问题,例如重复的文件、不存在的文件、没有引号的文件名等。 - antseq
5个回答

17

检查你的 angular.json 文件,是否存在重复的CSS文件!有时候当你安装依赖包时,他们会添加已经存在于 angular.json 文件中的CSS文件。


没错。我试图使用 ionic cap run ios 运行一个 Ionic 项目,但是收到了这个错误信息:configuration.entry['styles'] should not contain the item {...path/to/item} twice。谢谢。 - Lorraine R.

4

最近在一个已经含有bootstrap的Angular Visual Studio 2019项目中安装ngx-bootstrap后,我遇到了这个问题。深入查找错误后,我发现:

Webpack使用了一个不符合API模式的配置对象。- 配置项entry ['styles'] 不应包含两次 '...\source\repos...\ClientApp\node_modules\bootstrap\dist\css\bootstrap.min.css'。

而在angular.json文件中,我有以下内容:

        "styles": [
          "./node_modules/ngx-bootstrap/datepicker/bs-datepicker.css",
          "./node_modules/bootstrap/dist/css/bootstrap.min.css",
          "node_modules/bootstrap/dist/css/bootstrap.min.css",
          "src/styles.css"
        ],

我通过删除重复的bootstrap条目之一来解决了这个问题:

        "styles": [
          "./node_modules/ngx-bootstrap/datepicker/bs-datepicker.css",
          "node_modules/bootstrap/dist/css/bootstrap.min.css",
          "src/styles.css"
        ],

然后我的项目又可以运行了。关键在于检查错误信息以确定配置出了什么问题,如果有指定的话。

例如,在原始帖子中,我们看到非常相似的内容:

  • configuration.entry['styles'] 不应该两次包含项目 'C:\Users\smoreira\Documents\projetos\oficiais\doc-translator-front\node_modules\angular-bootstrap-md\scss\mdb-free.scss'。

1
最好的解决方案是不要重新安装Node并创建一个新项目。 - Javier Andres Caicedo

3

安装最新版本的webpack对我有用,我使用的是版本4.29.6和Angular 7.2.11。


这对我也起了作用。我从Angular 6.1升级到7,按照Angular文档中的指南进行操作。在遵循所需步骤后,我收到了上述错误。最终我运行了“ng update webpack”,将webpack更新到了4.30.0版本。然后我的项目就构建成功了。 - K. Akins

0

错误提示如下:

node_modules\angular-bootstrap-md\scss\mdb-free.scss' 重复了两次

这意味着在你的 "styles": 标签中重复了相同的样式,因此你需要删除其中一个。请检查你的 angular.json 文件。


-2
解决方案是重新安装Node并创建一个新的Angular项目。

这不是一个解决方案,而是失败。 - Brandon Kauffman
1
正确答案来自@Bereket Gebremeskel,我们需要重新检查是否包含了重复条目。请勿在不确定此错误的特定问题时进行注释。 - Shoaib Khalil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接