我正在尝试测试我为没有任何节点项目所做的一些打字稿定义。当我将它们包含在使用目标节点项目的项目中时,或者当我在其中创建自己的文件夹node_modules/@types/
并将它们放在那里(node_modules/@types/chrome-aws-lambda/index.d.ts
)时,它们已经工作了。这是使用节点 8.10、npm 5.6 和 typescript 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
下面的 import 语句,以防我在那里做一些愚蠢的事情。
谢谢!
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';