машинопись не находит типы jszip - PullRequest
1 голос
/ 17 июня 2019

У меня странная проблема, когда машинопись не находит типы для jszip.

  • другие типы работают нормально
  • типы, кажется, находятся в правильном месте

в моем исходном файле я использую эти import например

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

все отлично работает, кроме jszip: es

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 dir, все файлы там: 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, и они отлично работают
  • Iдумаю, что несоответствие версий не должно быть проблемой: "jszip": "^3.2.1" против "@types/jszip": "^3.1.6", верно?
  • завершение кода в IDE также показывает типы: enter image description here

Есть идеи, чего мне не хватает?

ссылки по теме:

1 Ответ

1 голос
/ 17 июня 2019

Я обнаружил проблему: в 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

и теперь сборка работает нормально.

Примечание: возможно, есть лучший способ это исправить - см. примечание к проблеме

...