javascript ENOENT:没有这样的文件或目录,打开'文件名'

rjjhvcjd  于 2023-06-20  发布在  Java
关注(0)|答案(3)|浏览(158)

我需要从一个.json文件中获取一些数据,但我得到了这个错误:

Error: ENOENT: no such file or directory, open '../Jsons/eshop.json'
    at Object.openSync (node:fs:585:3)
    at Object.readFileSync (node:fs:453:35)
    at Object.execute (C:\Users\Pooyan\Desktop\PDM Bot Main\commands\shop.js:9:24)
    at module.exports (C:\Users\Pooyan\Desktop\PDM Bot Main\events\guild\message.js:114:15)
  errno: -4058,
  syscall: 'open',
  code: 'ENOENT',
  path: '../Jsons/eshop.json'
}

我的代码:

let shop_data = JSON.parse(Buffer.from(fs.readFileSync('../Jsons/eshop.json')).toString());
    let index = (args[0] || "1");
    let page = shop_data.pages[index];

我认为这就是您所需要的全部内容,但是如果需要任何其他代码,请注解它。我正在使用discord.js v13和node.js 16

cl25kdpy

cl25kdpy1#

问题在于道路。看来路径是无效的给定eshop.json文件或可能有任何拼写错误的路径。
fs.readFileSync采用相对路径:

  • test.js
  • JSON
  • sampleJSON
  • eshop.json
fs.readFileSync('./JSON/sampleJSON/eshop.json');
z31licg0

z31licg02#

您需要使用pathmodule和join the foldernames来定义json文件的位置。
让,数据在下面的目录。(NewProject/data/eshop.json

  • 新项目
  • 项目根目录
  • 资料
  • eshop.json

您希望从项目目录下的任何文件访问eshop.json文件。
解决方案如下:

const fs = require('fs')
const path = require('path');
const directory = path.join('data', 'eshop.json')
// directory ==> data\eshop.json
exports.getRandomUserService = () => {
     const jsonData = fs.readFileSync(directory);
     const eshop= JSON.parse(jsonData);
     console.log('eshop data from json file: ',eshop);
}
92vpleto

92vpleto3#

我建议问题来自模块阅读路径,如果你的情况是fs。readFile正在查找,直到你从 root index.js调用它
如果您的路径
-index.js
./services/getData.js(fs.readFile func在这里调用)
./json/eshop.json
index.js内部

app.get( '/eshop', getData);

必须将 *./services/getData.js * 的视图端更改为 * index.js *

'../json/eshop.json'

'./json/eshop.json'

我也遇到了同样的问题,这个解决了我,不需要安装任何东西。

相关问题