import.meta.url 的相对路径

Relative path with import.meta.url

使用 ESM 时,很多建议使用 import.meta.url 加载 json 文件,如下所示

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, "../"))
);

而不是将path.resolve应用于import.meta.url,您应该将相对路径指定为第一个参数,例如下面

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