Typescript не может найти локально связанный модуль?

Я пытаюсь проверить некоторые определения машинописи, которые я сделал для проекта узла, у которого их нет. Они уже работают, когда я включаю их в свой проект, который использует проект целевого узла, или когда я делаю свою собственную папку в node_modules/@types/ и положил их туда (node_modules/@types/chrome-aws-lambda/index.d.ts). Это использует узел 8.10, npm 5.6 и машинописный текст 3.1

Тем не менее, я разбудил репозиторий для модуля от github и надеюсь включить его в проект, чтобы другие могли его использовать. Чтобы это произошло, я отредактировал разветвленный проект package.json В точку types в source/index.d.ts что живет рядом с main, source/index.js файл. Затем в моем проекте я связываю его, используя npm link ../chrome-aws-lambda,

Это не работает. Когда я бегу tsc он не может найти модуль, который он говорит. error TS2307: Cannot find module 'chrome-aws-lambda' Когда я запускаю его с --traceResolution это даже не похоже на то, что оно пытается искать это.

Я подумал, что это может быть связано с тем, что пакет на самом деле не "установлен", поэтому я попытался просто скопировать каталог проекта в node_modules вместо того, чтобы связать это. Я также подумал, что, возможно, что-то не работает и машинопись не читает types поле в package.json поэтому я положил один в корень, как это по умолчанию. Я подумал, что, возможно, он не был включен, и поэтому я добавил его в часть включения моего .tsconfig, Я пытался изменить свой baseUrl, paths, typeRoots, а также moduleResolution в конфигурационном файле.

Ничего из этого не работает.

Я не хочу подавать PR, не зная, работает ли он или нет. У кого-нибудь есть какие-либо подсказки относительно того, что делать здесь? Я с удовольствием добавлю любую необходимую информацию, пожалуйста, просто дайте мне знать! Я включил index.d.ts а также оператор импорта ниже на случай, если я просто сделаю что-то глупое там.

Спасибо!

index.d.ts:

declare module 'chrome-aws-lambda' {
    import * as Puppeteer from 'puppeteer';

    export default class Chromium {
        static args : Array<string>;
        static defaultViewport : {
            width : number,
            height : number,
            deviceScaleFactor : number,
            isMobile : boolean,
            hasTouch : boolean,
            isLandscape : boolean
        };
        static executablePath : Promise<string>;
        static headless : boolean;
        static puppeteer : typeof Puppeteer;
    }
}

а также рассматриваемое заявление на импорт:

import Chromium from 'chrome-aws-lambda';

1 ответ

Согласно этому ответу, вы должны сделать .d.ts подать модуль. Надеюсь, это поможет.

Кроме того, вам не нужно ставить .d.ts по особому пути, это может быть в проекте в любом месте. Я думаю, что это обсуждение будет очень полезным.

Другие вопросы по тегам