我正在尝试将npm i handlebars
集成到我现有的TS(v 3.4.5)项目中,但是始终获得TS2307: Cannot find module 'handlebars'.
。
我在分散在各个文件中的几个不同模块中使用把手。
根据此merged feature,维护者将DefinitelyTyped的类型导入到车把仓库中,然后他们对@types/handlebars包进行了折旧。
TS似乎无法找到回购类型,并从上方显示TS2307错误。
我能够进行干净编译的唯一方法是,将.d.ts文件从存储库中手动复制到一个自制的@ types / handlebars文件夹中。
那时我只要执行以下一项操作即可:
import Handlebars from "handlebars";
import * as Handlebars from "handlebars"
import "handlebars"
在仅1个使用把手的文件中,我能够生成无错误的构建。
我的tsconfig.json看起来像这样:
{
"compileOnSave": false,
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": true,
"sourceMap": true,
"module": "es6",
"target": "es5"
},
"include": [
"./Scripts/app/**/*",
],
"exclude": [
"node_modules",
]
}
如果没有手动复制.d.ts文件,似乎没有任何效果。
所以我有两个问题:
让Typescript识别不需要手动复制/粘贴的环境模块的正确方法是什么?
为什么TS仅在使用把手的模块之一中要求import语句?不是所有引用它的模块都需要它吗?
谢谢。
答案 0 :(得分:0)
基于link的TS文档:
现在,我们可以//// node.d.ts,然后使用import url = require(“ url”);加载模块。或从“ URL”中导入*作为URL。
这似乎是引用@types目录中不存在的环境模块的唯一方法。无需导入语句即可进行编译。
出于记录目的,我还尝试更新tsconfig.json的include路径以引用.d.ts,但忽略了。