【问题标题】:Can't import self created NPM package in Typescript code无法在 Typescript 代码中导入自己创建的 NPM 包
【发布时间】:2017-07-04 13:40:31
【问题描述】:

我有一个用 Typescript (2.1.6) 编写并在 VScode 中使用 Webpack 编译的 Web 项目。 我有一个作为第三方的日志记录客户端,我目前正尝试将其上传到 NPM 并将其用作正常依赖项。

该日志客户端最初是使用旧 Typescript 模块(那些编译成 Javascript 对象的模块)以“旧”Typescript 语法编写的,因此我重写了代码以使用导入/导出语法。 我正在编译重构的日志代码,将模块标志设置为“umd”,并将 ES5 作为目标脚本。 我正在使用 dts-generator npm 包为其创建一个 d.ts 文件。

目前它看起来有点像这样:(我面前并没有真正的代码,但这是一般的想法)

Logger.ts 的重构代码如下所示:

import { LoggerSettings } from "./LoggerSetting";
import { AjaxRequest } from "./AjaxRequest";

// ... more of the same
export class Logger {
    // Implementation
}

创建的 d.ts 如下所示:

declare module "logging-client" {
    export class LoggerSettings {
        // ...
    }
}

declare module "logging-client" {
    export class Logger {
        // ...
    }
}

package.json 看起来像这样:

{
    "name": "logging-client",
    "main": "Logger.js",
    "types": "logging-client.d.ts"
}

尝试将 Logger 导入我的打字稿代码时,我收到“找不到日志记录客户端模块”。

我什至如何开始诊断这样的问题? 我做错了吗?

在此先感谢 Avi :)

编辑:如果有人感兴趣,这里有一个 git repo 有问题: https://github.com/avrahams1/LogError

【问题讨论】:

  • 我认为在 package.json 你应该有"typings": "logging-client.d.ts" 而不是"types": "logging-client.d.ts"
  • 根据 Typescript 官方网站 (typescriptlang.org/docs/handbook/declaration-files/…),它们是相同的。另外那也不起作用:(
  • 是的,你是对的。还有一件事 - 在 github 上的示例中,我没有看到 package.json 的依赖项中列出了“logger-user”。没有它 - npm 永远不会安装它,tsc 永远找不到它。
  • 是的,这不是实际代码,它是一个模型来说明问题,所以我只是将输出复制到另一个项目的 node_modules 中。
  • 您可以尝试使用 --traceResolution 标志编译您的 logger-user 项目以查看发生了什么 (typescriptlang.org/docs/handbook/module-resolution.html)

标签: typescript npm


【解决方案1】:

您可以尝试使用--traceResolution 标志编译您的记录器用户项目,看看发生了什么。

更多信息在这里:module-resolution

【讨论】:

    【解决方案2】:

    我知道已经有一段时间了,只是想关闭这个。 没有办法重新协调新旧 Typescript 语法,我不得不重新编写旧记录器以符合 ES6 模块语法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多