如何使用 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关于globalStorage
或storagePath
的回答,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();
我正在尝试为 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关于globalStorage
或storagePath
的回答,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();