首页 文章

我如何计算所有全球进口以及从哪里进口?

提问于
浏览
0

当我在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

编辑(已解决):这里的问题与cannot redeclare block scoped variable (typescript)略有不同 . 这个问题的目的是检测重复的导入源,而不是使用ES6非显式赋值来为我们自动解决它 . 这里的解决方案是从libs或node_modules导入,而不是在它的答案中提到的范围 .

1 回答

  • 1

    crypto 已经是浏览器中的全局只读属性,因此TypeScript会阻止您尝试覆盖它 .

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

    但是既然你正在使用commonJS,你可能正在为Node构建,也许你并不是要在“lib”中包含“dom”类型?

相关问题