打字稿找不到本地链接的模块?
Posted
技术标签:
【中文标题】打字稿找不到本地链接的模块?【英文标题】:Typescript can not find locally linked module? 【发布时间】:2019-04-28 14:34:42 【问题描述】:我正在尝试测试一些我为一个没有任何节点项目的打字稿定义。当我将它们包含在使用目标节点项目的项目中时,或者当我在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
而不是链接它。我还认为也许某些东西不起作用并且打字稿没有读取package.json
中的types
字段,所以我将一个放在根目录中,因为这是默认设置。我想也许它没有被包括在内,所以我将它添加到我的 .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】:根据this answer,您必须将.d.ts
文件设为模块。希望它会有所帮助。
另外,您不必将.d.ts
放在特殊路径中,它可以在任何地方的项目中。我认为这个discussion 会很有帮助。
【讨论】:
以上是关于打字稿找不到本地链接的模块?的主要内容,如果未能解决你的问题,请参考以下文章
错误:“HTMLDivElement”类型上不存在属性“值”?打字稿找不到我的div?