我有一个运行在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
/data
目录下,并且将其作为自己的目录直接挂载在/files
的根目录下>file
节点读取文件内容,而不是目录。由于目录内容不断变化,仅读取静态文件名是不够的]我希望这不是太多的文字或不太清楚,我只是想确保至少我尝试过的大部分内容都可以写在这里。如果有人对docker下使用NodeJS fs模块的Node-RED的工作情况有一些了解,将不胜感激:)
我有一个运行在docker容器中的Node-RED应用程序,目的是定期读取目录中的内容,该目录中的.csv文件不断更新,有时还会添加新的.csv文件。点...