打字稿找不到jszip类型

时间:2019-06-17 16:23:04

标签: typescript typescript-typings jszip

我遇到一个奇怪的问题,即打字稿找不到jszip的类型。

  • 其他类型的设备都可以正常工作
  • 类型似乎在正确的位置

在我的源文件中,我使用了这些导入,例如

import * as fast_csv from 'fast-csv';
import { Response } from 'express';
import fs from 'fs';
import * as JSZip from 'jszip';

一切正常,除了jszipes

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 目录时,所有文件都在那里: enter image description here

这是 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中的代码完成还显示了以下类型: enter image description here

任何想法,我想念的是什么?

相关链接:

1 个答案:

答案 0 :(得分:1)

我发现了问题:在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