我正在开发一个普通的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。但是原始问题仍然存在
答案 0 :(得分:1)
要让TypeScript在node_modules
下查找模块,必须将moduleResolution
选项设置为node
。当module
选项设置为amd
时,moduleResolution
的默认值为classic
。 (请参阅compiler options table。)因此,您必须在"moduleResolution": "node"
中指定tsconfig.json
。