如何使用 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只是我加的一个输出通道。 这段代码的结果是:

undefined
MY_EXTENSION

如果我取出第二个 y2.appendLine(text) 我只收到 MY_EXTENSION 但我不知道如何使 text 全局化或如何修改全局变量的值 text 里面 readdir.

我也不明白为什么先执行y2.appendLine(text),然后执行readdir

这真的很重要,如果能得到您的帮助,我将不胜感激!

我不确定你到底想在那里做什么,但看看你的代码,你似乎正在尝试为你的扩展保存一些数据。

为此,您可能想改用 globalStorage 对象。

您可以在 Data storage section and the ExtensionContext documentation 中了解更多信息。

对于扩展程序的路径,请使用 context 对象及其属性:

extensionPath

The absolute file path of the directory containing the extension. Shorthand notation for ExtensionContext.extensionUri.fsPath (independent of the uri scheme).

extensionUri

The uri of the directory containing the extension.

来自 ExtensionContext。如果只是为了存储目的,请参见@mausworks关于globalStoragestoragePath的回答,ets.

你可以把它放在这样的函数中:

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();