Typescript 在 node_modules 文件夹中的定义文件中找不到类型

And*_*dry 5 javascript definition typescript

我有一个具有以下结构的项目:

\n\n
project/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.config\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 node_modules/\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 interactjs/\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.d.ts\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 browser/\n\xe2\x94\x82   |   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x82   |   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.ts\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有以下内容./package.json

\n\n
{\n    ...\n    "dependencies": {\n        "interactjs": "1.3.4"\n    },\n    "devDependencies": {\n        "typescript": "3.2.2"\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的./src/browser/tsconfig.json是:

\n\n
{\n    "compilerOptions": {\n        "target": "es5",\n        "module": "none",\n        "declaration": true,\n        "strict": true,\n        "strictNullChecks": false,\n        "outDir": "./out"\n    },\n    "typeRoots": [\n        "../../node_modules",\n        "../../node_modules/@types",\n        "../definitions"\n    ],\n    "include": [\n        "./**/*"\n    ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如您所看到的,我还包含了文件夹definitions,因为我想将一些手动定义包含在项目的所有 Typescript 文件中。

\n\n

问题

\n\n

编译失败如下:

\n\n
const p : interact.Position = { x: 1, y: 2 };\n
Run Code Online (Sandbox Code Playgroud)\n\n

有错误:

\n\n
index.ts:9:11 - error TS2503: Cannot find namespace \'interact\'.\n\n9 const s : interact.Position = { x: 1, y: 2 };\n            ~~~~~~~~\n
Run Code Online (Sandbox Code Playgroud)\n\n

interact即使node_modules/interactjs文件中index.d.ts包含所有定义,也未找到。

\n\n

问题是什么?

\n

小智 2

看起来您缺少"moduleResolution":"node",tsconfig.json 中的行。

这就是我的 tsconfig.json 文件之一的样子。

{
  "compileOnSave": false,
  "compilerOptions": {
  "baseUrl": "./",
  "outDir": "./dist/out-tsc",
  "sourceMap": true,
  "declaration": false,
  "module": "es2015",
  "moduleResolution": "node",
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true,
  "target": "es5",
  "typeRoots": [
    "node_modules/@types"
  ],
  "lib": [
    "es2017",
    "dom"
   ]
  }
}
Run Code Online (Sandbox Code Playgroud)