ES 模块语法的 JavaScript 项目中读取json文件

58 阅读1分钟

在Es模块语法中,不能使用require语法,因此需要一些不同的写法进行调整。

首先使用fileURLToPathdirname获取当前模块的目录路径(__dirname),然后通过再次调用dirname来获取项目根目录的路径。具体的目录层级调整可以根据你的项目实际结构进行修改。

import { dirname } from 'path';
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __rootdirname = dirname(dirname(__filename));

获取到项目根目录后,使用join进行文件的拼接~

import fs from 'fs'
const { join } = await import('path');

// 这里我将读取文件和拼接的代码合并在了一起
const data = fs.readFileSync(join(__rootdirname, 'data/countMessage/摸鱼F.json'), 'utf8');
// 将string转换为json对象
const config = JSON.parse(data);
// 遍历json对象
for (const key in config) {
    console.log(`${key}: ${config[key]}`);
}