[英]How to use local NPM package TS typings for ambient module (Handlebars)?
我正在尝试将npm i handlebars
集成到我现有的TS(v 3.4.5)项目中,但始终得到TS2307: Cannot find module 'handlebars'.
。
我在分布于各个文件的几个不同模块中使用了把手。
根据此合并功能 ,维护人员将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语句? 是否所有引用它的模块都不需要它?
谢谢。
基于TS文档的此链接 :
现在我们可以//// node.d.ts,然后使用import url = require(“ url”);加载模块。 或从“ URL”中导入*作为URL。
这似乎是引用@types目录中不存在的环境模块的唯一方法。 import语句不是必须要进行编译的。
为了记录,我还尝试更新tsconfig.json的include路径以引用.d.ts,但它被忽略了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.