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