【问题标题】:Node.js is unable to find a file in another folderNode.js 无法在另一个文件夹中找到文件
【发布时间】:2020-02-20 12:37:26
【问题描述】:

我有一年以来一直在维护的 Discord 机器人,几个月前我更改了一些文件结构以清理它,让我更容易知道发生了什么。

问题是,每当我尝试请求位于机器人根目录中的文件夹中的文件(带有 require)时,有时它与 "./" 一起使用,而其他时候它与 "../" 一起使用

当前文件结构为:

----commands  
-------commands.js(multiple files)  
----images  
-------halloween  
----------images.png/jpg(multiple images)  
----logs  
-------bot.log  
----modules  
------logger.js  
----settings  
-------config.json  
-emojis.json  
-gifs.json  
-index.js

按照上面的结构,例如,当我尝试在命令中请求其中一个万圣节图像时,对我来说合乎逻辑的事情是使用“../images/halloween/image.png”,但我有使用“./images/halloween/image.png”,就好像“images”文件夹在“commands”文件夹中一样

在我必须使用的命令之一中:

const logs = require("../modules/logger");  
const background = await Canvas.loadImage("./images/halloween/background.jpg");

我想知道为什么会这样。看到一个错误说找不到文件只是因为node.js决定这次父目录是"./"而不是"../"

【问题讨论】:

  • 请求什么?requirereadFile,或其他什么。?
  • 有要求,但有时我两个都不用,这取决于我使用的包
  • 我们能看到有时失败的代码吗?..
  • 我用示例代码编辑了帖子
  • 这不是使用require 来加载,它使用的是Canvas.loadImage,我不确定那是什么,但是对于readFile 之类的东西,它可能会使用try and Avoid using relative这里的路径,相对于当前工作目录的路径,并且可以在程序执行期间更改。而是使用path.join__dirname.. 例如。 loadImage(path.join(__dirname, './images/halloween/background.jpg'))

标签: javascript node.js directory discord.js directory-structure


【解决方案1】:

假设您的命令文件正在进行文件系统调用(因为您正在从中访问图像),那么您调用脚本的目录可能很重要。确保您使用path 实用程序来解析您的文件位置。详情请见NodeJS accessing file with relative path

【讨论】:

  • 所以基本上你的意思是,即使我试图在命令文件中请求,"./" 有时可能与命令文件相关,有时与 index.js 相关?
  • 如果您与另一个 javascript 文件交互,节点将为您解析相对于该文件的路径,但不会为其他类型的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 2016-03-22
  • 2020-01-31
  • 1970-01-01
  • 2015-12-18
  • 2016-08-08
  • 1970-01-01
相关资源
最近更新 更多