[英]How to get unknown file path - the extension path - using Javascript?
我正在尝试为 VSCode 开发一个扩展,我需要搜索保存我的扩展的确切文件路径。 我试过这段代码:
var text;
const directoryPath = path.join(Os.homedir(), '.vscode/extensions');
fs.readdir(directoryPath, function (err, files) {
if (err) {
y2.appendLine('Unable to scan directory: ' + err);
}
for (let i=0;i<files.length;i++){
if (files[i].startsWith("MY_EXTENSION")){
text = files[i];
y2.appendLine(text);
break;
}
}
});
y2.appendLine(text);
y2
只是我添加的一个 output 通道。 这段代码的结果是:
undefined
MY_EXTENSION
如果我取出第二个y2.appendLine(text)
我只收到MY_EXTENSION
但我不知道如何使text
全局或如何修改readdir
中的全局变量text
的值。
我也不明白为什么它首先执行y2.appendLine(text)
然后readdir
。
这真的很重要,如果能得到您的帮助,我将不胜感激!
我不确定您到底想在那里做什么,但是查看您的代码似乎您正在尝试为您的扩展特别保存一些数据。
为此,您可能希望改用globalStorage
object。
您可以在数据存储部分和ExtensionContext 文档中了解更多信息。
对于扩展的路径,使用context
object 及其属性:
extensionPath
包含扩展名的目录的绝对文件路径。
ExtensionContext.extensionUri.fsPath
的简写符号(独立于 uri 方案)。
extensionUri
包含扩展名的目录的 uri。
从ExtensionContext 。 如果只是出于存储目的,请参阅@mausworks 对globalStorage
或storagePath
等的回答。
你可以像这样把它放在 function 中:
function searchExt() {
const directoryPath = path.join(Os.homedir(), '.vscode/extensions');
fs.readdir(directoryPath, (err, files) => {
let text = null;
if (err) {
y2.appendLine(`Unable to scan directory: ${err}`);
} else {
for (let i = 0; i < files.length; i++) {
if (files[i].startsWith('MY_EXTENSION')) {
text = files[i];
break;
}
}
}
return text;
});
}
const searchResult = searchExt();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.