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

Posted

技术标签:

【中文标题】如何使用 Javascript 获取未知文件路径 - 扩展路径?【英文标题】:How to get unknown file path - the extension path - using Javascript? 【发布时间】:2022-01-19 02:36:27 【问题描述】:

我正在尝试为 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 设为全局或如何修改readdir 内的全局变量text 的值。

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

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

【问题讨论】:

由于JS的性质,不会等readdir完成。 非常感谢! 【参考方案1】:

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

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

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

【讨论】:

非常感谢您的回答!【参考方案2】:

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

extensionPath

包含扩展名的目录的绝对文件路径。 ExtensionContext.extensionUri.fsPath 的简写符号 (独立于 uri 方案)。

extensionUri

包含扩展名的目录的 uri。

来自ExtensionContext。如果只是出于存储目的,请参阅@mausworks 对globalStoragestoragePath 等的回答。

【讨论】:

非常感谢您的回答!【参考方案3】:

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

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

【讨论】:

非常感谢您的回答!

以上是关于如何使用 Javascript 获取未知文件路径 - 扩展路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Javascript从文件上传中获取完整路径

如何使用 JavaScript 从完整路径中获取文件名?

JavaScript获取未知类的结构

如何获取当前javascript文件名的绝对路径

如何获取javascript的绝对路径?

javascript获取当前文件脚本路径