gpt4 book ai didi

node.js - 在 ERR_REQUIRE_ESM 中使用 lowdb 结果

转载 作者:行者123 更新时间:2023-12-04 12:00:03 25 4
gpt4 key购买 nike

我正在尝试使用 LowDB在 Node 和 Typescript 项目中,但它一直给我一个 ES 模块错误......
错误:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: C:\{PATH_TO}\node_modules\lowdb\lib\index.js
require() of ES modules is not supported.
require() of C:\{PATH_TO}\node_modules\lowdb\lib\index.js from C:\{PATH_TO}\src\index.ts is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from C:\{PATH_TO}\node_modules\lowdb\package.json.
我正在使用 tsconfig.json使用 tsc --init 生成的它有以下选项:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
}
}

这是我的index.ts,直接从lowdb复制过来的。有趣的是,它只会在我导入 JSONFile 时抛出这个错误.
import { join } from "path";
import { Low, JSONFile } from "lowdb";

const file = join(__dirname, "db.json");
const adapter = new JSONFile(file);
const db = new Low(adapter);
我用来运行它的命令是 nodemon --watch "src/**" --ext "ts,json" --exec "ts-node src/index.ts"我整个上午都在阅读 GitHub 问题,但我似乎无法弄清楚这个问题。
我做了一个 GitHub Repo ,以便您可以下载并试用。
我在 Node v16.x 上。在此先感谢您的帮助!
编辑:
我说F-it,并写了我自己的json数据库......
// lowdb was thorwing errors, so I wrote this one as a stand-in

import path from "path";
import fspromises from "fs/promises";
import fs from "fs";

// path to json file
const FILE_PATH = path.join(__dirname, "database.json");

export const initJSONDatabase = <T>(initialData: T) => {
const read = async () => {
const data = await fspromises.readFile(FILE_PATH, { encoding: "utf-8" });
return JSON.parse(data) as unknown as T;
};

const write = async (data: T) => {
await fspromises.writeFile(FILE_PATH, JSON.stringify(data), {
encoding: "utf-8",
});
};

if (!fs.existsSync(FILE_PATH)) {
write(initialData);
}

return {
read,
write,
};
};

// -- Usage --
//
// const defaultState = {
// users: [],
// posts: []
// };
// const db = initJSONDatabase(defaultState);
// const data = await db.read();
// data.users.push('Jay-Z');
// await db.write(data);

最佳答案

我在使用 require() 时遇到了问题与 Node v 12.20.0 .我使用 Node v 12.18.3 和,

 "dependencies": {
"lowdb": "^1.0.0", //the newest version had the problem
"socket.io": "^3.1.0",
"supervisor": "^0.12.0"
},
现在它正在工作!

关于node.js - 在 ERR_REQUIRE_ESM 中使用 lowdb 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67649849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com