Как мне выяснить весь глобальный импорт и откуда он импортируется?

когда я добавляю следующую строку в начало app.ts

const crypto = require('crypto');

Я получаю следующую ошибку,

Невозможно повторно объявить блочную переменную 'crypto'

Похоже, он был глобально импортирован откуда-то еще, вот как выглядит мой tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "outDir": "./dist",
    "target": "ES6",
    "module": "commonjs",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": true,
    "noImplicitAny": false,
    "strictNullChecks": true,
    "noUnusedLocals": true,
    "types": [
      "node"
    ],
    "typeRoots": [
      "./node_modules/@types"
    ],
    "lib": ["es2015", "dom"]
  },
  "include": [
    "./src/"
  ]
}

PS: Вышеупомянутая ошибка возникает, когда я пытаюсь передать ее с терминала. Я использую VisualStdioCode, в VisualStdioCode он не показывает никаких ошибок, на которые указывает,

/path/to/VisualStdioCode/Visual Studio Code.app/Contents/Resources/app/extensions/typescript/node_modules/typescript/lib/lib.dom.d.ts

РЕДАКТИРОВАТЬ (решено): проблема здесь немного отличалась от не может повторно объявить переменную с областью видимости блока (typescript) Цель этого вопроса заключалась в том, чтобы обнаружить повторяющийся источник импорта, а не использовать неявное назначение ES6 для автоматического решения этой проблемы. Решение здесь заключалось в том, чтобы импортировать либо из libs, либо из node_modules, а не ограничивать его, в отличие от упомянутых там ответов.


person ishandutta2007    schedule 28.01.2017    source источник
comment
Возможный дубликат не может повторно объявить переменную области действия блока (typescript)   -  person Juliën    schedule 28.01.2017


Ответы (1)


crypto уже является глобальным свойством только для чтения в браузере, поэтому TypeScript не позволяет вам пытаться перезаписать его.

https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto

Но поскольку вы используете commonJS, возможно, вы строите для Node и, может быть, вы не хотели включать типы «dom» в «lib»?

person Rob Lourens    schedule 29.01.2017
comment
Понял, спасибо. lib/dom достаточно, добавление в node_modules избыточно. Мне нужен дом на сервере для другого варианта использования. - person ishandutta2007; 01.02.2017