Estoy tratando de desarrollar una extensión para VSCode y necesito buscar la ruta exacta del archivo donde se guarda mi extensión. He probado este código:
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 es solo un canal de salida que agregué. El resultado de este código es:
undefined MY_EXTENSION Si elimino el segundo y2.appendLine(text) , recibo solo MY_EXTENSION pero no entiendo cómo hacer que el text sea global o cómo modificar el valor del text de la variable global dentro readdir .
Tampoco entiendo por qué primero ejecuta y2.appendLine(text) y luego readdir .
¡Es realmente importante y estaría agradecido de contar con su ayuda!
No estoy seguro de qué está tratando de hacer exactamente allí, pero mirando su código parece que está tratando de guardar algunos datos para su extensión en particular.
Para este propósito, probablemente desee usar el objeto globalStorage en su lugar.
Puedes obtener más información al respecto en la sección Almacenamiento de datos y la documentación de ExtensionContext .
Para la ruta a su extensión, use el objeto de context y sus propiedades:
extensionPath
La ruta de archivo absoluta del directorio que contiene la extensión. Notación abreviada para
ExtensionContext.extensionUri.fsPath(independiente del esquema uri).
extensionUri
El uri del directorio que contiene la extensión.
Desde ExtensionContext . Si es solo para fines de almacenamiento, consulte la respuesta de @mausworks sobre globalStorage o storagePath , ets.
Podrías ponerlo en una función como esta:
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();