为啥在ubuntu服务器的nodejs中动态创建目录时出错?
Posted
技术标签:
【中文标题】为啥在ubuntu服务器的nodejs中动态创建目录时出错?【英文标题】:Why error while dynamically creating directory in nodejs in ubuntu server?为什么在ubuntu服务器的nodejs中动态创建目录时出错? 【发布时间】:2019-08-23 07:33:08 【问题描述】:我正在尝试在 public/data 文件夹中创建目录以放置我的读取数据,但在 nodejs
中动态创建目录时出现此错误。
Error: ENOENT: no such file or directory, mkdir './public/data/folder'
at Object.mkdirSync (fs.js:753:3)
at /home/ubuntu/New/routes/index.js:589:14
at FSReqWrap.oncomplete (fs.js:141:20)
我已经通过检查文件夹是否存在并在不存在时使用mkdirsync()
创建文件夹来实现我的代码
var dd = './public/data/'+ id;
if (!fs.existsSync(dd))
fs.mkdirSync(dd,'0777', true);
console.log("Directory Created!!");
Directory Created!!
【问题讨论】:
How to create full path with node's fs.mkdirSync?的可能重复 我认为你应该检查中间目录是否也存在,因为公共或公共/数据可能不存在 【参考方案1】:mkdirSync
接受选项属性 recursive
(默认为 false)。
查看guide
所以你可以使用:
fs.mkdirSync('/dir1/dir2', recursive: true );
【讨论】:
遇到同样的错误ENOENT: no such file or directory, mkdir '/dir1/dir2'
,从构建运行。【参考方案2】:
这个问题解决了,以root权限运行npm
解决方案:
sudo npm install -g PACKAGE-NAME --unsafe-perm=true --allow-root
【讨论】:
请不要使用root权限。以上是关于为啥在ubuntu服务器的nodejs中动态创建目录时出错?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能像传递其他变量一样将函数从 Express.js 传递给 EJS?
使用 Express、Mongodb 和 EJ 显示下拉动态数据