我正在研究NPM软件包,而我的课程之一就是这样:

import { MIME_PNG } from 'jimp';
import { IDimensions } from './spritesheet';

/**
 * A class for a single sprite. This contains the image
 * and supporting data and methods
 */
export class Sprite {
    image: Jimp.Jimp;
    dimensions: IDimensions;

    /**
     *
     * @param img a jimp image of the sprite
     */
    constructor (img: Jimp.Jimp) {
        this.image = img;

        this.dimensions = {
            width: this.image.bitmap.width,
            height: this.image.bitmap.height
        }
    }

    /**
     * Get the buffer for the sprite. Returns a promise.
     */
    getBuffer (): Promise<Buffer> {
        return new Promise((resolve, reject) => {
            return this.image.getBuffer(MIME_PNG, (err, buff) => {
                if (err) return reject(err);

                resolve(buff);
            });
        });
    }
}


Typescript仅使用命令tsc即可进行编译,但是当我发布程序包时,我将使用命令tsc -d -p ./ --outdir dist/进行编译以生成.d.ts文件。

输出的文件如下所示:

/// <reference types="node" />
import { IDimensions } from './spritesheet';
/**
 * A class for a single sprite. This contains the image
 * and supporting data and methods
 */
export declare class Sprite {
    image: Jimp.Jimp;
    dimensions: IDimensions;
    /**
     *
     * @param img a jimp image of the sprite
     */
    constructor(img: Jimp.Jimp);
    /**
     * Get the buffer for the sprite. Returns a promise.
     */
    getBuffer(): Promise<Buffer>;
}


现在,当在VSCode中查看此文件时,以及在发布/导入到另一个项目中时,我在Jimp.Jimp类型上遇到打字稿错误,提示“找不到命名空间'Jimp'”。

我注意到tsc正在从文件中删除import { MIME_PNG } from 'jimp';行,如果我重新添加该文件,则可以正常编译。

我的tsconfig.json文件如下所示:

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "sourceMap": true,
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "moduleResolution": "node"
  }
}

最佳答案

我和你有同样的问题。通过将参考路径添加到.ts文件顶部的.d.ts jimp文件中,我可以从Jimp导入内容。

所以在import { MIME_PNG } from 'jimp';之前

您应该添加
/// <reference path="../../node_modules/jimp/jimp.d.ts" />

这样看来Typescript能够找到Jimp命名空间。

关于node.js - tsc生成的.d.ts文件给出错误“找不到命名空间'Jimp'”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46385981/

10-10 13:10