【问题标题】:Docker nodejs cannot open fileDocker nodejs无法打开文件
【发布时间】:2021-01-04 09:17:04
【问题描述】:

我有一个带有 nodejs 的 docker 容器。 (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)
...

我绝对确定这个文件存在,甚至更进一步,当我转到容器 shell 并从命令行运行这个命令 (node /home/parsecsv.js) 时它工作得很好。我该怎么办?

【问题讨论】:

    标签: node.js docker cron alpine


    【解决方案1】:

    检查文件的权限,你可以通过给文件完全权限来调试。

    将此添加到您的 docker 文件中,看看问题是否仍然存在。

    运行 chmod 777 /home/parsecsv.js

    【讨论】:

    • 使用以下指令确保文件可执行:RUN chmod u+x /home/parsecsv.js
    • @ИгорьБыстревский 能否请您在问题中分享 cron 的 Dockerfiles 和 sh 文件。这将有助于深入了解。
    • @Prabhu 我已经发布了答案,请看一下
    【解决方案2】:

    所以,帮助我的是将 js 文件复制到 /root 目录而不是 /home。然后将 work.sh 中的路径更改为:node parsecsv.js 当节点从 sh 脚本运行时,它似乎无法读取绝对路径或其他东西。这很令人困惑,但现在它正在工作。

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 2019-01-06
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      相关资源
      最近更新 更多