首页 > 解决方案 > 更改 TypeScript 代码的目标版本会导致 TypeScript 编译器不再找到该模块

问题描述

我在 Visual Studio 2019 中通过 npm 安装了信号器。当我的编译器选项中有 ES6 上的目标时,我收到错误TS2307 (TS) Cannot find mogule '@microsoft/signalr.当我将目标更改为 ES5 时我没有收到错误,但在浏览器中我得到了异常Uncaught ReferenceError: exports is not defined

这是我的 tsconfig:

{
  "compilerOptions": {
    "target": "ES6",
    "sourceMap": true, 
  },

  "compileOnSave": true, 
}

标签: typescriptvisual-studiotsc

解决方案


module选项具有不同的默认值,target并且该moduleResolution选项具有不同的默认值基于该module选项。来自文档

--module target === "ES3" or "ES5" ? "CommonJS" : "ES6"

--moduleResolution module === "AMD" or "System" or "ES6" ? "Classic" : "Node"

这就是导致行为改变的原因。您可能应该明确指定这些选项。什么可能适用于您的情况:

{
  "compilerOptions": {
    "target": "ES6",
    "sourceMap": true, 
    "module": "CommonJS", 
    "moduleResolution": "node"
  },

  "compileOnSave": true, 
}


推荐阅读