【问题标题】:Unable to create folder, invalid argument mkdir无法创建文件夹,无效参数 mkdir
【发布时间】:2022-12-03 07:38:08
【问题描述】:

所以我无法运行下面的代码来创建一个文件夹,如果它不存在的话,在我的例子中它不存在(因为我正在测试其余代码以从 v13 更新到 v14 并引入斜杠命令),但我无法克服这一点。

var dir = `./cha/${"<@" + interaction.member.id + ">"}`;

//Creates a folder for the user (if non existent)
if (!fs.existsSync(dir)) {
    await fs.mkdirSync(dir);
}

之后发生的事情是每当执行上述命令时,我都会收到此错误:

Error: EINVAL: invalid argument, mkdir './cha/<@145716362650714112>'
    at Object.mkdirSync (node:fs:1388:3)
    at Object.execute (C:\Users\pdste\Desktop\Bamborgor\commands\createchar.js:46:14)
    at Object.execute (C:\Users\pdste\Desktop\Bamborgor\events\interactionCreate.js:16:18)
    at Client.<anonymous> (C:\Users\pdste\Desktop\Bamborgor\bam.js:29:44)
    at Client.emit (node:events:525:35)
    at InteractionCreateAction.handle (C:\Users\pdste\Desktop\Bamborgor\node_modules\discord.js\src\client\actions\InteractionCreate.js:97:12)
    at module.exports [as INTERACTION_CREATE] (C:\Users\pdste\Desktop\Bamborgor\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)        
    at WebSocketManager.handlePacket (C:\Users\pdste\Desktop\Bamborgor\node_modules\discord.js\src\client\websocket\WebSocketManager.js:352:31)
    at WebSocketShard.onPacket (C:\Users\pdste\Desktop\Bamborgor\node_modules\discord.js\src\client\websocket\WebSocketShard.js:489:22)
    at WebSocketShard.onMessage (C:\Users\pdste\Desktop\Bamborgor\node_modules\discord.js\src\client\websocket\WebSocketShard.js:328:10) {
  errno: -4071,
  syscall: 'mkdir',
  code: 'EINVAL',
  path: './cha/<@145716362650714112>'
}

【问题讨论】:

    标签: javascript node.js npm discord discord.js


    【解决方案1】:

    在基于 Windows 的环境中(看起来你正在使用这里),某些字符被认为是“保留的”并且不能用于命名文件/目录。

    具体来说,您使用小于 (&lt;) 和大于 (&gt;) 符号可能会导致问题,因为它们确实是保留的。来自Microsoft’s documentation

    使用当前代码页中的任何字符作为名称,包括 Unicode 字符和扩展字符集中的字符 (128–255),以下情况除外:

    • 以下保留字符:
      • <(小于)
      • >(大于)
      • :(冒号)
      • "(双引号)
      • /(正斜杠)
      • (反斜杠)
      • | (竖条或管道)
      • ? (问号)
      • *(星号)

    【讨论】:

    • 哈哈!那行得通,不敢相信解决方案如此简单。通常我在 Linux 上编写代码。谢谢!
    猜你喜欢
    • 2010-11-22
    • 2014-11-30
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 2014-11-23
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多