带有 import.meta.url 的相对路径

Isa*_*aac 5 javascript path node.js es6-modules

使用 ESM 时,很多建议使用import.meta.url以下方式加载 json 文件

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

现在上面的内容可以工作,但假设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, "../"))
);
Run Code Online (Sandbox Code Playgroud)

Isa*_*aac 9

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

const result = fs.readFileSync(
  new URL("../abc.json", import.meta.url)
);
Run Code Online (Sandbox Code Playgroud)