打字稿找不到'node_modules'文件夹中的第三方模块

时间:2018-11-13 18:02:23

标签: typescript node-modules

我正在开发一个普通的Typescript应用程序,并已使用我自己创建的导入模块(属于项目的一部分)成功地对其进行了测试。现在,我试图从“ node_modules”文件夹中包含第3方模块,但编译器无法找到该模块。

import * as pnp from '@pnp/pnpjs';

以下是我对tsconfig的设置:

{
  "compileOnSave": true,
  "compilerOptions": {
    "types": [],
    "sourceMap": true,
    "module": "amd",
    "target": "es5",
    "noEmitOnError": true,
    "outDir": "./dist"
  },
  "exclude": [
    "node_modules",
    "obj",
    "bin"
  ]
}

下面是我的package.json:

{
  "version": "1.0.0",
  "name": "OSD.SharePointHostedApp",
  "private": true,
  "devDependencies": {
    "@types/chai": "^4.1.7",
    "@types/sharepoint": "^2013.1.6"
  },
  "dependencies": {
    "jquery": "^3.3.1",
    "@pnp/pnpjs": "^1.2.5",
    "chai": "^4.2.0"
  }
}

打字稿版本:1.0.3.0。 (我尝试将其更新为最新版本,但仍显示1.0.30.0,也许是因为??)

我在这里想念什么?我已经检查并验证了node_modules中是否存在第三者模块。

更新

版本存在问题。即使我安装了最新版本的打字稿3.1.6,也没有被安装,并且显示了旧版本1.0.3.0。以某种方式将Typescript 1.0作为Microsoft SDK的一部分安装在文件夹C:\ Program Files(x86)\ Microsoft SDKs \ TypeScript \ 1.0中。我删除了该文件夹,现在当我执行tsc -v时,最新版本号显示为-> 3.1.6。但是原始问题仍然存在

1 个答案:

答案 0 :(得分:1)

要让TypeScript在node_modules下查找模块,必须将moduleResolution选项设置为node。当module选项设置为amd时,moduleResolution的默认值为classic。 (请参阅compiler options table。)因此,您必须在"moduleResolution": "node"中指定tsconfig.json