我有一个网站的打字稿nodejs项目。我需要使用此特定nodejs模块中提供的功能:https://www.npmjs.com/package/weather-js
此模块在其存储库中没有.d.ts文件,也没有“&types”中提供的文件。打字稿存储库。我不需要此模块的类型定义,但typescript不包含它并产生错误。
无论我尝试导入哪种方式,我都要
TS2304: Cannot find name 'require'.
在构建控制台中,或
TypeError: qs.escape is not a function
在浏览器开发控制台中。
StackOverflow上的许多回复都提出了需要2018年不再可用的存储库的解决方案,或者可能有用但仍然会产生错误的存储库
TypeError: qs.escape is not a function
2018年打字稿中使用/ import / require / consume nodejs模块功能(没有.d.ts定义)的正确方法是什么?
答案 0 :(得分:3)
您可以添加一个虚拟定义以允许它导入但不实际输入模块内容(尽管如果您应该完全键入它们并提交到DefinitlyTyped,那么每个人都可以从类型安全中受益!)< / p>
耐候js.d.ts
// declaring module will allow typescript to import the module
declare module 'weather-js' {
// typing module default export as `any` will allow you to access its members without compiler warning
var weatherJs: any;
export default weatherJs;
}
yourCode.ts
import weather from 'weather-js'
weather.find({search: 'San Francisco, CA', degreeType: 'F'}, () => {})