一个小小报错整了将近1个小时,最后发现是权限问题和文件命名问题。
报错描述:
1,调用node.js下的fs模块,使用mkdir方法创建文件夹时失败,且无任何错误输出。
2,检查代码后,代码逻辑无问题。
报错显示:

分析:
1,无报错输出,不知道是我的Vscode的配置问题还是怎么的,一直就是偶尔有报错输出,明明写了输出错误代码,但就是不会告诉你哪里错了。有些时候可以输出错误的地方。
2,问了AI(DeepSeek),让它再帮我生成了一份同样功能的代码,对于这种简单的代码,它给定代码肯定不存在拼写或逻辑错误。所以考虑是别的错误。
最后错误是:
1.文件写入权限问题。
2.当前的这个js脚本文件命名问题(同样的文件,改成简短的123.js就能成功运行)。
因为要创建文件夹,对应的是写入操作,得确保在当前文件夹下的,当前用户有写入权限。查看方式,回到桌面,右键文件夹,点击属性:
一般来说,如果不是管理员权限运行该文件的话,那此时就是普通用户的权限。点击上图右侧中间的“编辑”按钮,可查看普通用户(即Users)在该文件夹拥有的权限,如下:
如果你没有设置勾选上“修改”和“写入”权限的话,就会出现我这样的无法成功调用mkdir方法的情况。修改为勾上就可,然后应用、确定,保存退出。
无法修改权限的解决办法
如果弹出弹窗“无法枚举容器中的对象 访问被拒绝”,无法成功修改权限的话,可以参考这篇文章:win10提示“无法枚举容器中的对象 访问被拒绝”终极解决方法 我就是参考这篇文章解决了权限问题,然后就能成功运行代码了。
修改权限后,仍然执行脚本失败,有可能是该文件有问题
如下:(截图可能看不懂,但这不重要)看后文
同样的代码,我复制到同一个目录下的新建的一个js文件里就可以成功运行,但是如果继续运行之前一直调试的文件就会一直报错,所以我怀疑是之前的文件已经用不了了。
所以思路是,代码没问题,权限也没问题,只是当前的这个脚本文件有问题(因为一直调试,之前修改权限的时候报了该文件的错)。
所以新建一个文件(比如我这里随便取得123.js或者hello.js的名字),用同样的代码,就直接运行成功了。如下:
续更:
终于准确定位错误了,见下图。
同样的代码:
const fs = require('fs')
// stat 方法,status的缩写 状态。
fs.stat('./观书有感.txt', (err, data) => {
if (err) {
console.log('get succcss fail', err);
return;
}
console.log(data);
})
文件命名不对就无法正确执行。我试了一下,分别将文件名改为“1-20_1fs模块查看资源状态.js”,“1-20_1fs模块查看资源状.js”,“1-20_1fs模块查看资源.js”,(依次删除一个汉字)只有第3个名称能正常运行。大家可以试一试,或者只有我的电脑有这个问题??
由此看,js文件的命名也会影响其运行。很小的一个点,能解决莫名其妙的报错。
所以以后要注意文件命名。