繁体   English   中英

如何为环境模块(车把)使用本地NPM包TS类型?

[英]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文件,似乎没有任何效果。

所以我有两个问题:

  1. 使Typescript识别不需要手动复制/粘贴的环境模块的正确方法是什么?

  2. 为什么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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM