我目前正在启动我的NodeJS应用程序,并且我有以下if语句:
Error: ENOENT, no such file or directory './realworks/objects/'
at Object.fs.mkdirSync (fs.js:654:18)
at Object.module.exports.StartScript (/home/nodeusr/huizenier.nl/realworks.js:294:7)
但奇怪的是,该文件夹已存在,但检查在以下代码段上失败:
if(fs.existsSync(objectPath)) {
var existingObjects = fs.readdirSync(objectPath);
existingObjects.forEach(function (objectFile) {
var object = JSON.parse(fs.readFileSync(objectPath+objectFile));
actualObjects[object.ObjectCode] = object;
});
}else{
fs.mkdirSync(objectPath); // << this is line 294
}
我无法理解在创建目录时如何发生no such file or directory
。
答案 0 :(得分:5)
缺少指定路径上的任何文件夹时,mkdir
将抛出ENOENT
。
有2种可能的解决方案(不使用第三方包装):
fs.mkdir
。 recursive
选项:fs.mkdir('./path/to/dir', {recursive: true}, err => {})
答案 1 :(得分:3)
以下对我有用:
fs.mkdir( __dirname + '/realworks/', err => {})
答案 2 :(得分:0)
问题是由forever
相对于调用forever start
命令的工作目录运行应用程序引起的,而不是应用程序入口点的位置。
答案 3 :(得分:0)
尝试:
fs.mkdir('./realworks/', err => {})
答案 4 :(得分:0)
发生此错误的原因是,如果在给fs.mkdir或fs.mkdirSync的路径中存在任何文件夹,则这些方法将抛出/回调,并带有ENOENT错误。
答案 5 :(得分:0)
使用localeChange
或Wrong:
fs.writeFile(...)
Correct:
fs.writeFileSync(...)
时,必须通过fs.mkdir
,fs.mkdirSync
和folder1/folder2/folder3
之类的路径,否则会出现上述错误
答案 6 :(得分:0)
在这里How to create full path with node's fs.mkdirSync?
NodeJS 10.12.0版本添加了对mkdir和mkdirSync的本机支持,以使用以下递归:true选项来递归创建目录:
fs.mkdirSync(targetDir, { recursive: true });
如果您更喜欢fs Promises API,则可以编写
fs.promises.mkdir(targetDir, { recursive: true });
答案 7 :(得分:0)
ENOENT在linux documentation中的描述如下:
没有这样的文件或目录(POSIX.1-2001)。
通常,当指定路径- 名称不存在,或者名称中的组件之一 路径名的目录前缀不存在,或者 指定的路径名是悬空的符号链接。
ENOENT的另一个可能原因是您没有足够的权限来创建目录。
这是在构建docker映像时发生的,我没有足够的权限在当前WORKDIR中创建子文件夹。使用--chown=user:usergroup
更改文件夹的所有者,或将伪指令的USER
更改为root
用户都是解决此问题的有效方法。
答案 8 :(得分:0)
对我有用的是
yarn build
重新安装答案 9 :(得分:-1)
所以...您可能正在使用 ubuntu 终端来创建您的 React 应用程序。
碰巧我正在测试windows最近启动的ubuntu终端,安装在windows电脑上,就像一个虚拟机,但实际上没那么乱。
我碰巧遇到了和你们一样的错误,在测试了社区之前提供的所有选项后,它们都不起作用。但是,我确实为我的问题找到了解决方案。它给了我 ENOENT 错误,例如找不到测试文件或目录。但我确实在那里。我正在使用 npm start,并想出了使用 sudo npm start 的想法......并且它奏效了。