为啥在ubuntu服务器的nod​​ejs中动态创建目录时出错?

Posted

技术标签:

【中文标题】为啥在ubuntu服务器的nod​​ejs中动态创建目录时出错?【英文标题】:Why error while dynamically creating directory in nodejs in ubuntu server?为什么在ubuntu服务器的nod​​ejs中动态创建目录时出错? 【发布时间】: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服务器的nod​​ejs中动态创建目录时出错?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能像传递其他变量一样将函数从 Express.js 传递给 EJS?

使用 Express、Mongodb 和 EJ 显示下拉动态数据

使用 ejs 和 node 创建动态 html

Express 框架中 使用ejs

如何利用Heartbeat与Floating IP在Ubuntu 14.04上创建高可用性设置

我想让href标签动态并且值将被填充并且我有ejs模板