在 Angular nx 项目中导入 JavaScript 模块
Posted
技术标签:
【中文标题】在 Angular nx 项目中导入 JavaScript 模块【英文标题】:import JavaScript module in angular nx project 【发布时间】:2021-12-03 11:10:54 【问题描述】:我有一个使用 nx 构建的 Angular 项目我想导入没有打字稿类型的标准 javascript 库,例如我想安装和使用 cytoscape 和 cytoscape-context-menus
我得到编译错误,例如
错误 TS7016:找不到模块的声明文件 'cytoscape 上下文菜单'。 'C:/dev/armo/armo-ng-app/node_modules/cytoscape-context-menus/cytoscape-context-menus.js' 隐含地具有“任何”类型。尝试
npm i --save-dev @types/cytoscape-context-menus
(如果存在)或添加新声明 (.d.ts) 文件包含declare module 'cytoscape-context-menus';
我该如何解决?我试图放置声明文件,但我认为我的设置没有看到它们。
【问题讨论】:
【参考方案1】:由于没有可用的类型定义 npm 包,您必须自己编写。从你需要的开始,然后根据需要继续在它之上构建。
如果您愿意,也可以将其作为 npm 包共享。
发现这篇文章由@dubtypescript编写TypeScript类型定义文件:http://blog.wolksoftware.com/contributing-to-definitelytyped
还可以从这里看看细胞镜是如何打字的,借用他们的方法:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/cytoscape/index.d.ts
在结帐时添加了堆栈闪电战:
https://stackblitz.com/edit/cytoscape-6cyuem?file=src%2Fapp%2Fcytoscape-context-menus.d.ts
【讨论】:
谢谢,但没有用。有些人在“DefinitelyTyped”中没有打字。我也尝试添加 .d.ts 文件,但仍然出现编译错误 @canbax 添加了一个 stackblitz 来查看 感谢您的努力,但对我来说最重要的是tsconfig.json
文件。 Stackblitz 没有那个文件。另外,我不能使用@types/cytoscape
。它破坏了我的应用程序中的很多事情,因为我没有对很多事情使用类型定义
应该可以下载 stackblitz 项目并检查 tsconfigs。尽管它仍应与标准角度应用程序一起使用。您也可以以类似的方式手动键入 cytoscope。
我仍然收到错误消息。问题在于 nx 项目的架构。我真的不明白如何添加类型。以上是关于在 Angular nx 项目中导入 JavaScript 模块的主要内容,如果未能解决你的问题,请参考以下文章
在 Angular 项目中导入 2 个同名的 JavaScript 函数
如何在 Angular 8 项目中导入 Mapbox GL Draw