问题描述
我有一个带有nodejs的码头工人容器。 (node:14.11-alpine3.12
)
运行cron,使用以下命令执行.sh文件:
node /home/parsecsv.js
;
无论何时cron执行此命令,我都会收到错误消息
'rror: Cannot find module '/home/parsecsv.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:893:15)
...
我绝对确定此文件存在,甚至更多,当我进入容器外壳并从命令行运行此命令(node /home/parsecsv.js
)时,它运行正常。我该怎么办?
解决方法
检查文件的权限,您可以通过授予文件的完全权限来进行调试。
将此添加到您的docker文件中,查看问题是否仍然存在。
运行chmod 777 /home/parsecsv.js
,因此,对我有所帮助的是将js文件复制到/root
目录而不是/home
。然后将work.sh中的路径更改为:node parsecsv.js
似乎当节点从sh脚本运行时,它无法读取绝对路径或其他内容。令人困惑,但是现在可以正常工作了。