【发布时间】: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