如何使用 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 对globalStorage
或storagePath
等的回答。
【讨论】:
非常感谢您的回答!【参考方案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 获取未知文件路径 - 扩展路径?的主要内容,如果未能解决你的问题,请参考以下文章