Angular 无法确定组件5的模块
当我使用“ng build--prod”构建Angular应用程序时,出现以下错误。当我使用Angular 4构建时,这是有效的,而使用Angular 5得到错误。有角度的5“ng发球”非常有效 错误中出错:无法确定mypath/node\u modules/time-ago-pipe/time-ago-pipe.ts中类TimeAgoPipe的模块!将TimeAgoPipe添加到NgModule以修复它 获取错误Angular 无法确定组件5的模块,angular,angular5,Angular,Angular5,当我使用“ng build--prod”构建Angular应用程序时,出现以下错误。当我使用Angular 4构建时,这是有效的,而使用Angular 5得到错误。有角度的5“ng发球”非常有效 错误中出错:无法确定mypath/node\u modules/time-ago-pipe/time-ago-pipe.ts中类TimeAgoPipe的模块!将TimeAgoPipe添加到NgModule以修复它 获取错误 有任何解决方案吗?Angular 5,特别是Angular cli 1.5已启用
有任何解决方案吗?Angular 5,特别是Angular cli 1.5已启用默认的提前编译,它需要知道在项目文件夹中找到的所有组件/管道等的模块。如果您有一些未在任何模块中声明的组件,它将抛出错误 您可以在某些模块中声明
TimeAgoPipe
:
@NgModule({
declarations: [TimeAgoPipe, ...]
})
export class AppModule {}// for example can be any other used module
或者尝试在不提前编译的情况下运行构建生成的代码将运行得较慢
ng build --prod --aot=false
第三种方法是,如果您根本不使用该管道,您可以将其添加到tsconfig.json
{
...
"exclude": [ "path/to/unused/component.ts", ... ]
}
我遇到了完全相同的问题,可以提供一个解决方案,尽管我不确定aot构建没有成功拾取此特定管道的原因: 解决方法 从节点_模块/time-ago管道复制time-ago-pipe.ts,然后将此文件复制到您自己的项目中 将其正常添加到模块中的声明中,并将其导入到导入中,例如:
import { TimeAgoPipe } from './_pipes/time-ago-pipe';
这将在AOT构建中成功编译,您仍然可以使用管道。检查大小写敏感度
import { MyComponent } from "./User/my-component";
在我的例子中,问题是文件夹用户是在我的导入语句中以U作为大写字母创建的。但实际上在磁盘上它是在一个小盒子里。当我在import语句中将文件夹重命名为user(小写为u)时,它也对我起了作用
import { MyComponent } from "./user/my-component";
所以请检查导入路径的大小写敏感度。对我来说,即使声明中有组件,它也不起作用。因此,我从声明和导入中删除了该组件。然后我通过使用VisualStudio代码intellisense在声明中自动完成组件名称,并使用auto import在模块文件顶部导入组件来阅读它。令我惊讶的是,它起了作用
如果上述任何解决方案都不适用于您,那么这也值得一试。在我的例子中,错误是由于不同文件中对同一类的多个定义造成的。这是由于某些开发人员复制粘贴代码造成的
对我来说,导入路径中的问题是区分大小写的。但您必须找到所有存在问题的导入路径。不仅导入模块中使用的内容 在我的例子中,出于某种原因,我在
mypipe.ts
以及app.component.ts
中声明了一个管道作为自己的类。我删除了app.component中的一个,它编译得很好
在错误消息中,检查它到底在哪里抱怨,看看这是否是项目中的双重代码。我也只在prod构建中遇到了相同的错误,而在dev构建中没有遇到。我在app.module.ts中导入了component.ts文件,但没有在NgModule中使用。所以我删除了导入,它工作得很好。在我的例子中,有两个组件的名称相同。我删除了其中一个,它已经修复。遇到了这个问题,希望整合现有的建议,并在其他方法对我无效的情况下提出一些一般策略:
管道的模块
;我使用的是定制管道
直接注入角度服务
- 当我停止使用
管道时,问题消失了;因此,我删除了
转换--我将转换移动到另一个管道
,完全停止依赖服务
管道
NgModule的声明(和导出
)属性中正确声明(和导出)管道/组件
- 资料来源:
node_modules
)内,将管道复制到您自己的项目中(如果可能),和/或从您的NgModule
之一重新导出管道
- 资料来源:
tsconfig.json
的exclude
属性来排除文件(这可能不是每个人的选项)
- 资料来源:
ng build--aot=false
(可能是更快的构建,但随后会创建一个未优化的应用程序;了解有关aot的更多信息)
- 资料来源:
NgModule
s的声明数组中
- 资料来源:
- (我这里的例子是
有大写问题和打字错误,不应该使用。/您的pippe.ts'
文件扩展名(这在Typescript中暗示))ts
- 资料来源:,包括
- 确保任何使用有问题管道/组件的
文件位于ts
中,该NgModule
导入
s