首页 > 解决方案 > Typescript 未从“node_modules”文件夹中找到第 3 方模块

问题描述

我正在开发一个普通的 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,也许是因为这个??)

我在这里想念什么?我已经检查并验证了第 3 方模块存在于 node_modules 中。

更新

版本有问题。即使我安装了最新版本的 typescript 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 。但原来的问题仍然存在

标签: typescriptnode-modules

解决方案


要让 TypeScript 在 下查找模块node_modules,该moduleResolution选项必须设置为node. 设置为module选项时amd,默认moduleResolution值为IS classic。(请参阅编译器选项表。)因此,您必须"moduleResolution": "node"tsconfig.json.


推荐阅读