Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

311
Views
Cómo obtener la ruta relativa a un archivo importado en node.js

tengo el siguiente archivo:

 import {something} from '../../something'; something.do();

Y quiero obtener la ruta relativa de something como una cadena, pero de forma dinámica en lugar de escribirla implícitamente. Algo como esto:

 import {something} from '../../something'; getPath(something); // will return '../../something' something.do();

¿Cuáles son mis opciones? ¿Es posible?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede obtener una ruta relativa a un archivo importado de la siguiente manera

PRIMERA APROXIMACIÓN : (se modifica el archivo importado):

  1. Suponga que tiene una carpeta de test . Dentro de la carpeta de test , tiene los archivos test1.js y /mod/test2.js .

prueba/mod/prueba2.js

 // here are some of your codes export const importedFilePath = import.meta.url; // export current file absoulte path
  1. Ahora dentro del archivo test/test1.js :

El método path.relative(from, to) devuelve la ruta relativa de a a según el directorio de trabajo actual. Si from y to se resuelven en la misma ruta (después de llamar a path.resolve() en cada uno), se devuelve una cadena de longitud cero.

Si se pasa una cadena de longitud cero como desde o hacia, se utilizará el directorio de trabajo actual en lugar de las cadenas de longitud cero. Documentación

 import path from 'path' import { importedFilePath } from './mod/test2.js'; const currentFilePath = import.meta.url; console.log(path.relative(currentFilePath, importedFilePath));

Producción:

 ..\mod\test2.js

Ahora tiene la ruta relativa from test/test1.js a test/mod/test2.js

Sé que esta no es una solución perfecta, pero puede lograr el resultado que desea utilizando el enfoque anterior.

SEGUNDO ENFOQUE

Si estuviera utilizando el sistema de módulos CommonJS, puede lograr este resultado sin modificar el archivo importado.

Suponga que usa el módulo CommonJS. Sin ninguna modificación en el archivo importado, puede lograr el mismo resultado que el anterior de la siguiente manera:

archivo test/test1.js :

 const file = require('./mod/test2'); const path = require('path'); const importedFilePath=require.cache[__filename].children[0].id; //this returns imported file path const currentFilePath = __filename; console.log(path.relative(currentFilePath, importedFilePath));

Y salida:

 ..\mod\test2.js
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!