Относительный путь с import.meta.url

#javascript #node.js #path #es6-modules

Вопрос:

При работе с ESM довольно много рекомендаций по загрузке файла json, используя import.meta.url , как показано ниже

 import fs from 'fs';
const result = fs.readFileSync(
  new URL("abc.json", import.meta.url)
);
 

Теперь все вышесказанное работает, но при условии, что abc.json находится в том же каталоге, что и расположение скрипта. Мне интересно, как насчет относительного пути к сценарию, например, abc.json на одном уровне выше каталога. Я пробовал ниже, но это не работает

 import fs from "fs";
import path from "path";

const result = fs.readFileSync(
  new URL("abc.json", path.resolve(import.meta.url, "../"))
);
 

Ответ №1:

Вместо применения path.resolve к import.meta.url , вы должны указать относительный путь в качестве первого параметра, например, как показано ниже

 const result = fs.readFileSync(
  new URL("../abc.json", import.meta.url)
);