找不到经过修改的第三方软件包的模块

时间:2018-11-11 21:49:14

标签: typescript

我正在使用此程序包react-native-parallax-scroll-view,它没有像@types/...这样的预设类型程序包,由于某种原因,我在声明此程序包时不得不修改此程序包并现在制作自己的副本在.d.ts文件中,如下所示:

declare module "../modified_modules/react-native-parallax-scroll-view";

它没有被声明为ts的模块,我该如何解决呢?

2 个答案:

答案 0 :(得分:1)

首先请确保您的declare module语句不在另一个模块内(即,在包含的.d.ts文件中不应进行顶级导入或导出),因此应将其视为模块声明而不是而不是模块增强。

TypeScript不支持带有相对路径的模块声明。参见this issue。您应该得到一个错误,“环境模块声明不能指定相对模块名称。”如果要使用相对路径在代码中导入模块,提供类型声明的唯一方法是将.d.ts文件和相应的顶层导出文件放在.js文件旁边(或者实际上是根据您的rootDirs选项)。据我所知,使用这种方法无法将模块声明为未类型化(等同于declare module "../modified_modules/react-native-parallax-scroll-view";,但没有正文)。因此,您需要进行一些设置,以便可以使用非相对路径导入模块,并将相同的非相对路径放入declare module语句中,然后声明应该起作用。

在您的情况下,建议通过将package.json的版本设置为包含修改后模块的目录的相对路径,来在主项目的react-native-parallax-scroll-view中注册修改后的模块。然后npm install将从node_modules/react-native-parallax-scroll-view到修改后的模块建立符号链接。由于修改后的模块随后可通过标准位置进行访问,因此该设置有望给您带来最少的麻烦。您可以像使用原始模块一样使用import ... from "react-native-parallax-scroll-view"declare module "react-native-parallax-scroll-view";

答案 1 :(得分:0)

  

它没有被声明为ts的模块,我该如何解决呢?

代替

declare module "../modified_modules/react-native-parallax-scroll-view";

should be doing

declare module "react-native-parallax-scroll-view";