【问题标题】:Finding the source code of the node.js native modules, and explanation about typed modules查找 node.js 原生模块的源代码,以及类型化模块的解释
【发布时间】:2020-01-06 23:02:48
【问题描述】:

我有一台 Windows 机器。 我试图找到节点在哪里获取本机模块的源代码。 我发现的只是@types 文件,其中仅包含“仅类型”模块。 例如,模块“assert”存在于节点 github 中的 master/lib 文件夹中,但在我的机器中,我发现的只是 typedscript assert.d.ts。 这个文件 assert.d.ts 不包含任何 INPLEMENTATION ,它只包含没有实现的类型化函数。

在哪里可以找到我的机器使用的代码?

此外,Visual Studio 中调试模式下的“Step Into”选项将引导我找到真正的源代码,这将是非常好的。现在,它只是在进入模块时忽略它(例如在 require 上)。

另外,当我在模块名称上单击 CTRL+MOUSE_CLICK 时,Visual Studio 会进入该“仅类型化”文件。

有人可以帮助我找到并轻松访问真实代码吗?

我添加一个例子。这是来自assert.d.ts (on user/AppData/.../@types/node/)

function fail(message?: string | Error): never;

仅此而已!而在assert.js

https://github.com/nodejs/node/blob/master/lib/assert.js

我们已经实现了函数。

如果有人可以向我解释幕后发生的事情,我将不胜感激!

感谢所有

【问题讨论】:

    标签: node.js typescript npm


    【解决方案1】:

    如果您使用的是 typescript,IDE 将转到文件定义 .d.ts。要找到实现,您必须转到包名称下的 node_modules,您将拥有一切。

    【讨论】:

    • 感谢您的回答。我确实找到了我用 npm 下载的所有模块,但我没有找到本机模块。例如,我没有找到assert 模块或fs
    • 您可以使用 ._builtinLibs 的 api nodejs.org/api/repl.html#repl_default_evaluation 获取它们,但它们被编译到二进制文件中,因此您无法轻松访问它们,只能获取列表
    • 我在这个REPL 模块中找不到_builtinLibs_.builtinLibs。尽管如此,我从你那里了解到的是,本机模块是在节点核心内编译的,一个只能使用编译代码(二进制数据)进行操作来访问它们,这可以通过REPL 实现。因此,如果我想通过 VS 代码跳转到模块的源代码,我就是不能?我应该只能通过 github 访问它?
    • 我很糟糕,你可以使用require("module").builtinModules 获得列表我还不够清醒啊啊啊。但基本上是的,您无法访问它们。
    猜你喜欢
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    相关资源
    最近更新 更多