Typescript не может найти локально связанный модуль? - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь проверить некоторые определения машинописи, которые я сделал для проекта узла, у которого их нет.Они уже работают, когда я включаю их в свой проект, который использует проект целевого узла, или когда я делаю свою собственную папку в 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, поэтому я поместил его в корень, так как это значение по умолчанию.Я подумал, что, возможно, он не был включен, и поэтому добавил его в часть include моего .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 Ответ

0 голосов
/ 27 ноября 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...