typescript - typescript 找不到 jszip 类型
问题描述
我有一个奇怪的问题,打字稿找不到jszip
.
- 其他类型工作正常
- 类型似乎在正确的位置
在我的源文件中,我使用这些导入,例如
import * as fast_csv from 'fast-csv';
import { Response } from 'express';
import fs from 'fs';
import * as JSZip from 'jszip';
Error:(9, 24) TS7016: Could not find a declaration file for module 'jszip'. 'ROOT/node_modules/jszip/dist/jszip.min.js' implicitly has an 'any' type.
当我查看我的(一个也是唯一的)node_modules/@types
目录时,所有文件都在那里:
这是来自的相关条目package.json
"dependencies": {
"@hapi/joi": "^15.0.1",
"fast-csv": "^2.5.0",
"jszip": "^3.2.1"
},
"devDependencies": {
"@types/express": "^4.16.0",
"@types/hapi__joi": "^15.0.1",
"@types/jszip": "^3.1.6",
}
笔记:
- 我认为打字稿只使用名称:例如在导入
jszip
时应该搜索@types/jszip
- 但似乎我错了,因为类型
@hapi/joi
被调用@types/hapi__joi
并且它们工作正常
- 但似乎我错了,因为类型
- 我认为版本不匹配也不应该是一个问题:
"jszip": "^3.2.1"
vs."@types/jszip": "^3.1.6"
,对吧? - IDE 中的代码完成还显示了以下类型:
任何想法,我错过了什么?
相关链接:
解决方案
更新 04.2020
似乎问题已在 jszip 中得到修复3.3.0
:请参阅Fix browser module resolution #614
此外,我认为该问题仅与客户端(角度)构建有关。由于node有自己的stream包
原来的
我发现了问题:在tsconfig.json
我们有一个明确的路径定义:
"paths": {
"jszip": ["node_modules/jszip/dist/jszip.min.js"],
删除后,构建失败:
ERROR in C:/devroot/node_modules/jszip/lib/readable-stream-browser.js
Module not found: Error: Can't resolve 'stream' in 'C:\devroot\node_modules\jszip\lib'
解决方案是安装stream
软件包(感谢这个问题评论)
npm i stream
或使用typedi时:
typedi stream
现在构建工作正常。
注意:也许有更好的方法来解决这个问题 - 请参阅此问题评论