Node-RED docker问题读取目录内容

问题描述 投票:0回答:2

我有一个运行在docker容器中的Node-RED应用程序,目的是定期读取目录中的内容,该目录中的.csv文件不断更新,有时还会添加新的.csv文件。关键是要定期读取新条目,解析数据并继续发送。

我没有利用众多的'contrib'节点,因为我启用了NodeJS'fs'模块并对其进行了使用。此外,内置的“文件”和“文件中” Node-RED模块在读取.csv文件的内容时很有用,因此这不是问题。

问题在于新的.csv文件被添加到所有.csv文件所在的目录中。我希望能够读取所有文件名,然后读取所有.csv文件。

我已经将.csv文件目录安装到docker容器中,并且在测试我是否能够读取文件名时,发生了奇怪的事情。即使文件在容器中可见(使用docker exec -it CONTAINER /bin/bash查看),包含fs.readdir的一段代码也不会列出文件。当我也尝试fs.readdir时,会看到已安装到容器中的/data目录的内容,它列出了诸如10%的时间之类的内容(向节点注入时间戳以运行它)

“节点断流”

如您从图像中看到的,没有在节点的每次执行中列出有问题的目录的内容。使用正确的路径作为参数运行此节点时,永远不会列出包含.csv文件的安装目录的内容。

操作系统是CentOS 7,我不是sudoer。我设法做到这一点,以使安装的文件或目录都不是root拥有的,因此它们是由容器内的node-red用户拥有的。我设法在我的sudoer上的ubuntu上拉过这个目录文件清单,但是由于那里的任何东西都不是root拥有的,所以我不确定是否是问题所在。我觉得这可能与操作系统有关。

注意:

  • 所有相关文件和目录均具有权限rwxr-xr-x
  • 我已经尝试将包含目录的.csv文件挂载在/data目录下,并且将其作为自己的目录直接挂载在/files的根目录下>
  • 我能够使用Node-RED file节点读取文件内容,而不是目录。由于目录内容不断变化,仅读取静态文件名是不够的]
  • 我已从安装在容器中的settings.js文件启用了NodeJS'fs'模块
  • Node-RED节点(在图像中)不输出任何错误(我通过向图像中的函数添加错误返回来尝试此操作)
  • 我尝试以root用户身份运行Node-RED容器,但未定义用户
  • 我正在使用docker-compose运行Node-RED容器
  • 我希望这不是太多的文字或不太清楚,我只是想确保至少我尝试过的大部分内容都可以写在这里。如果有人对docker下使用NodeJS fs模块的Node-RED的工作情况有一些了解,将不胜感激:)

我有一个运行在docker容器中的Node-RED应用程序,目的是定期读取目录中的内容,该目录中的.csv文件不断更新,有时还会添加新的.csv文件。点...

node.js docker csv centos node-red
2个回答
0
投票

核心Watch节点应为您完成所有这一切,无需编写功能节点。

enter image description here


0
投票

回答我的问题,为什么Node-RED大部分时间都无法读取目录内容,这是因为使用了异步fs.readdir模块。当我切换为使用同步版本fs.readdirSync时,Node-RED能够毫无问题地读取目录内容。

© www.soinside.com 2019 - 2024. All rights reserved.