【问题标题】:typescript does not find jszip typestypescript 找不到 jszip 类型
【发布时间】:2019-06-17 16:23:04
【问题描述】:

我有一个奇怪的问题,打字稿找不到 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",
   }

注释:

  • 我认为 typescript 只使用名称:例如导入jszip 时应搜索@types/jszip
    • 但似乎我错了,因为@hapi/joi 的类型被称为@types/hapi__joi 并且它们工作正常
  • 我认为版本不匹配也不应该成为问题:"jszip": "^3.2.1""@types/jszip": "^3.1.6",对吧?
  • IDE 中的代码完成还显示了以下类型:

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

相关链接:

【问题讨论】:

    标签: typescript typescript-typings jszip


    【解决方案1】:

    04.2020 更新

    似乎问题已在 jszip 3.3.0 中得到修复:请参阅 Fix browser module resolution #614

    此外,我认为该问题仅与客户端(角度)构建有关。由于节点有自己的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

    【讨论】:

      猜你喜欢
      • 2016-03-20
      • 2019-01-03
      • 2019-05-21
      • 2017-02-16
      • 1970-01-01
      • 2020-07-04
      • 2018-02-24
      • 2017-11-09
      相关资源
      最近更新 更多