繁体   English   中英

如何获取未知文件路径 - 扩展路径 - 使用 Javascript?

[英]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 对globalStoragestoragePath等的回答。

你可以像这样把它放在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM