首页 > 解决方案 > typescript 找不到 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目录时,所有文件都在那里: 在此处输入图像描述

这是来自的相关条目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",
   }

笔记:

任何想法,我错过了什么?

相关链接:

标签: typescripttypescript-typingsjszip

解决方案


更新 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

现在构建工作正常。

注意:也许有更好的方法来解决这个问题 - 请参阅此问题评论


推荐阅读