【问题标题】:How do I import a library into node without a Typescript/TSD definition?如何在没有 Typescript/TSD 定义的情况下将库导入节点?
【发布时间】:2015-11-17 08:01:50
【问题描述】:

我正在尝试使用一个名为 connect-session-knex 的会话助手,它非常晦涩,以至于它没有发布的打字稿定义。所以当我尝试编译我的打字稿节点项目时,我得到了错误,

error TS2307 Cannot find module 'connect-session-knex'

有没有办法只忽略这个模块的 TS?如何在没有 TSD 的情况下导入它?我知道 knex 有一个 tsd,但包装器没有。我从通用的角度来问这个问题,即如何处理没有类型定义的库。

对于任何人来说:在没有 tsd 的情况下编译 typescript。缺少 tsd。没有 tsd。

【问题讨论】:

标签: node.js module typescript package tsd


【解决方案1】:

错误 TS2307 找不到模块 'connect-session-knex' 有没有办法只忽略这个模块的 TS?如何在没有 TSD 的情况下导入它?

使用var/require 而不是import/require。即

var csk = require('connect-session-knex');

请注意,您应该包含 node.d.ts 以便声明 require

还有:https://basarat.gitbooks.io/typescript/content/docs/node/nodejs.html

【讨论】:

    【解决方案2】:

    另一个建议是将您自己的 .d.ts 文件作为空定义文件启动并导出模块。然后,如果您想在模块上获得智能感知,您可以向它添加定义。

    例如connect-session-knex.d.ts:

    // 声明模块 声明模块“connect-session-knex”{ }

    【讨论】:

    • 如何将 node_module 与我的定义文件连接起来?
    • 不太明白这个问题@SebastianBusek
    • 例如connect-session-knex;我可以创建文件 connect-session-knex.d.ts 然后添加 use import * as connectSessionKnex from "connect-session-knex" 但是 TS 转录器如何知道 connect-session-knex.d.ts 与 node_modules 目录中的模块 connect-session-knex 匹配?
    • 这由节点模块分辨率控制。 .d.ts 文件只是告诉 TypeScript 模块的外观(类型、命令等)。它是实际连接到 .js 文件的节点。更多typescriptlang.org/docs/handbook/module-resolution.html
    猜你喜欢
    • 2016-06-03
    • 1970-01-01
    • 2017-02-12
    • 2023-03-28
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2017-06-24
    相关资源
    最近更新 更多