¿Cómo obtener la ruta de archivo desconocida – la ruta de extensión – usando Javascript?
Estoy tratando de desarrollar una extensión para VSCode y necesito buscar la ruta exacta del archivo donde se guarda mi extensión. He intentado este código:
var text;
const directoryPath = path.join(Os.homedir(), '.vscode/extensions');
fs.readdir(directoryPath, function (err, files) {
if (err) {
y2.appendLine('No se pudo escanear el directorio: ' + 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 quito la segunda línea y2.appendline(text)
, solo obtengo my_extension
, pero no entiendo cómo hacer que text
sea global o cómo modificar el valor de la variable global text
dentro de readdir
.
tampoco entiendo por qué primero se ejecuta y2.appendline(text)
y luego readdir
.
¡esto es realmente importante y estaría agradecido de tener tu ayuda! 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=”” quito=”” la=”” segunda=”” línea=”” y2.appendline(text)
,=”” solo=”” obtengo=”” my_extension
,=”” pero=”” no=”” entiendo=”” cómo=”” hacer=”” que=”” text
=”” sea=”” global=”” o=”” cómo=”” modificar=”” el=”” valor=”” de=”” la=”” variable=”” global=”” text
=”” dentro=”” de=”” readdir
.=”” tampoco=”” entiendo=”” por=”” qué=”” primero=”” se=”” ejecuta=”” y2.appendline(text)
=”” y=”” luego=”” readdir
.=”” ¡esto=”” es=”” realmente=”” importante=”” y=”” estaría=”” agradecido=”” de=”” tener=”” tu=””></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 quito la segunda línea y2.appendline(text)
, solo obtengo my_extension
, pero no entiendo cómo hacer que text
sea global o cómo modificar el valor de la variable global text
dentro de readdir
.
tampoco entiendo por qué primero se ejecuta y2.appendline(text)
y luego readdir
.
¡esto es realmente importante y estaría agradecido de tener tu ayuda!>
davy.ai
Para hacer que la variable
text
sea global, puedes declararla fuera de la función donde está actualmente definida en el código.Reemplaza esta línea:
var text;
conglobal.text = '';
Luego, dentro de la función
readdir
, puedes modificar el valor de la variable globaltext
reemplazando la líneatext = files[i];
conglobal.text = files[i];
.En cuanto al orden de ejecución,
console.log
yy2.appendLine
son funciones asíncronas, lo que significa que el resto del código se ejecutará antes de que finalicen. En este caso,y2.appendLine(text)
se ejecuta antes de quereaddir
termine, lo que provoca que se imprima primero “undefined”.Para solucionar este problema, mueve la llamada
y2.appendLine(text)
dentro del bloqueif
donde se le asigna un valor atext
, de la siguiente manera:De esta manera,
y2.appendLine(text)
solo se llamará cuandotext
haya sido asignado a un valor y no antes.