我正在嘗試為 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.
這真的很重要,如果能得到您的幫助,我將不勝感激!
uj5u.com熱心網友回復:
我不確定您到底要在那里做什么,但是查看您的代碼似乎您正在嘗試為您的擴展程式保存一些資料。
為此,您可能希望改用該globalStorage物件。
您可以在資料存盤部分和ExtensionContext 檔案中了解更多相關資訊。
uj5u.com熱心網友回復:
對于擴展程式的路徑,請使用context物件及其屬性:
extensionPath
包含擴展名的目錄的絕對檔案路徑。的簡寫符號
ExtensionContext.extensionUri.fsPath(獨立于 uri 方案)。
extensionUri
包含擴展名的目錄的 uri。
來自ExtensionContext。如果只是出于存盤目的,請參閱@mausworks 關于globalStorageor storagePath、ets的回答。
uj5u.com熱心網友回復:
你可以把它放在這樣的函式中:
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();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/383357.html
標籤:javascript 节点.js 视觉工作室代码 FS vscode-扩展
