错误:无法找到模块“@ckeditor/ckeditor5-build-classic”的声明文件,angular 9。

32

我想在Angular 9中使用ckeditor,我按照https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/frameworks/angular.html中的说明进行操作,但在导入'@ckeditor/ckeditor5-build-classic'时出现错误。

Could not find a declaration file for module '@ckeditor/ckeditor5-build-classic'. 

'a:/repositories/BasimStore/source/Web/Frontend/node_modules/@ckeditor/ckeditor5-build-classic/build/ckeditor.js' implicitly has an 'any' type.
  Try `npm install @types/ckeditor__ckeditor5-build-classic` if it exists or add a new declaration (.d.ts) file containing `declare module '@ckeditor/ckeditor5-build-classic';`

在此输入图片描述

我的 package.json 文件里有 "@ckeditor/ckeditor5-angular": "^1.2.3" 和 "@ckeditor/ckeditor5-build-classic": "^20.0.0",但还是显示出错信息。 我在 ckeditor5-build-classic 文件夹中找不到 index.d.ts 文件。如何解决这个错误?

6个回答

52
在项目根目录或任何文件夹中添加typings.d.ts文件, 在类型声明文件中添加以下代码。
declare module '@ckeditor/ckeditor5-build-classic' {
    const ClassicEditorBuild: any;

    export = ClassicEditorBuild;
}

这就是全部,Angular会自动检测类型并将其编译为依赖项,这将解决该问题。官方的CKEDITOR页面也建议这样做:https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/frameworks/angular.html

输入图像描述

目录结构

输入图像描述


1
除了上面的建议之外,还需要执行以下步骤:在出现问题的组件中添加导入,例如 x.component.tsimport * as ClassicEditorBuild from '@ckeditor/ckeditor5-build-classic'; export class x implements OnInit { public Editor = ClassicEditorBuild;constructor() { } ngOnInit(): void {}}最后,在您的 x.component.html 中添加以下代码 - sid7747
我将其添加到具有'@ckeditor/ckeditor5-build-classic'导入的模块中,它可以正常工作。 - Onen simon
太棒了。我遇到了同样的问题,你的建议起作用了。感谢你。 - Andrecon
1
在根目录下无法工作,必须使用“src”。 - jenson-button-event

5
我也遇到了同样的问题。
运行以下命令后:

错误图片

npm i --save-dev @types/ckeditor__ckeditor5-build-classic

错误立即消失了。

我的监视器找不到CKEditorError进行导入。这解决了我的问题。 - undefined

5

我遇到了与Angular 8相同的问题

"@ckeditor/ckeditor5-angular": "^1.2.3", "@ ckeditor/ckeditor5-build-classic": "^19.0.2"

编辑:我找到了解决方案:编辑你的TypeScript配置文件(tsconfig.json),并添加一个新的键值对:

"noImplicitAny": false

“noImplicitAny”不是一个真正的解决方案,它存在的原因是为了强制类型。 - Dživo Jelić

1
如果有人仍然感兴趣,可以寻求TS社区的支持。 你只需要在package.json中更新以下条目即可:
    "@types/ckeditor__ckeditor5-core": "^27.0.13",
    "@types/ckeditor__ckeditor5-basic-styles": "^27.0.1",
    "@types/ckeditor__ckeditor5-editor-classic": "^27.0.0",
    "@types/ckeditor__ckeditor5-essentials": "^27.0.4",
    "@types/ckeditor__ckeditor5-paragraph": "^27.0.0"
    

0

Typescript找不到声明文件,并且对"any"的隐式/推断类型进行了投诉。

你可以像@khaled提到的那样禁用规则(这是一种"核选项" - 规则在全局范围内被禁用)。

一个更好的解决方法是在typings.d.ts文件中明确定义ClassicEditorBuild的类型为"any",如此处所述:https://github.com/ckeditor/ckeditor5-angular/issues/70#issuecomment-513827165

当我升级到Angular 11.0.5和Typescript 4.0.2时,这对我起作用。


-3

步骤1)首先识别错误并仔细阅读错误信息

步骤2)他们提供了一个新的安装包,例如 ckeditor,尝试使用npm进行安装。

install --save @ckeditor/ckeditor5-build-classic

第三步)即使它不起作用

第四步)在导入语句下面键入 ClassicEditor,他们会提供导入选项, 然后您选择应该导入的ClassicEditor @ckeditor/ckeditor5-build-classic


1
Jalaleddin实际上缺少类型定义,可以通过以下npm命令来实现。npm i --save-dev @types/ckeditor__ckeditor5-build-classic - Sajeeb Chandan Saha
是的,但我给出的步骤是sudo步骤,不是完全按照针脚对针脚的方式,我没有提到。 - undefined

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