typescript 找不到 jszip 类型
typescript does not find jszip types
我有一个奇怪的问题,打字稿找不到 jszip
的类型。
- 其他类型工作正常
- 类型似乎在正确的位置
在我的源文件中,我使用这些 imports 例如
import * as fast_csv from 'fast-csv';
import { Response } from 'express';
import fs from 'fs';
import * as JSZip from 'jszip';
一切正常,除了 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"
与 "@types/jszip": "^3.1.6"
,对吗?
- IDE 中的代码完成也显示了类型:
知道吗,我缺少什么?
相关链接:
更新 04.2020
问题似乎已在 jszip 3.3.0
中得到解决:参见 Fix browser module resolution #614
此外,我认为该问题仅与客户端 (angular) 构建有关。由于节点有自己的 stream package
原创
我发现了问题:在 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
包(感谢这个 issue-comment)
npm i stream
或使用 typedi 时:
typedi stream
现在构建工作正常。
注意:也许有更好的方法来解决这个问题 - 请参阅此 issue-comment
我有一个奇怪的问题,打字稿找不到 jszip
的类型。
- 其他类型工作正常
- 类型似乎在正确的位置
在我的源文件中,我使用这些 imports 例如
import * as fast_csv from 'fast-csv';
import { Response } from 'express';
import fs from 'fs';
import * as JSZip from 'jszip';
一切正常,除了 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"
与"@types/jszip": "^3.1.6"
,对吗? - IDE 中的代码完成也显示了类型:
知道吗,我缺少什么?
相关链接:
更新 04.2020
问题似乎已在 jszip 3.3.0
中得到解决:参见 Fix browser module resolution #614
此外,我认为该问题仅与客户端 (angular) 构建有关。由于节点有自己的 stream package
原创
我发现了问题:在 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
包(感谢这个 issue-comment)
npm i stream
或使用 typedi 时:
typedi stream
现在构建工作正常。
注意:也许有更好的方法来解决这个问题 - 请参阅此 issue-comment