我正在设置一个使用本机加载项的node.js项目。本机加载项包括大量导出的函数。我设置了一个打包文件(.d.ts
),其中包含从本机加载项导出的所有函数定义和数据等。当我用npm打包所有这些并将其安装到客户端项目中时,vscode intellisense会获取所有类型,一切都很好。
当我尝试在与原生插件相同的项目中使用test.js
的类型时,不会选择输入,特别是导出的变量;我怀疑这与它们在.d.ts
中的导出方式或.d.ts
中模块的命名有关。
在.d.ts
中,我将导出列为;
interface MyI {
Initiate() : void;
}
module 'modulename' {
export var i : MyI;
}
我require
客户端中的模块为(.js
文件);
var i = require("modulename");
在测试代码中,我要求它(因为我通过index.js
文件存根);
var i = require("./index.js");
index.js
反过来看起来像;
var i = require("./lib/nativeaddon");
module.exports.i = i;
当我使用index.js
的加载项(通过test.js
)时,如何让vscode在本地使用intellisense的输入?
答案 0 :(得分:2)
要创建vscode intellisense的输入以适用于“本地”情况(功能test.js
)和“全局”情况(作为node_module),请在main / entry {{之后命名该文件1}}做的伎俩。在这种情况下,.js
文件为"main"
,因此输入内容为index.js
。
这看起来很自然,但我无法找到指定此内容的vscode intellisense的文档。
我之前在package / node_module名称index.d.ts
之后命名了输入法,并将packagename.d.js
(来自"main"
)保留为package.json
。 index.js
中的“typings”值也应与package.json
文件名匹配。
我认为“index.js”或“main.js”的一个简洁的替代方法是命名主入口点,以及包名后的相应类型。