You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker内Linux执行Node shebang脚本提示文件不存在报错

问题根因

报错是因为脚本文件使用了Windows格式的**CRLF(\r\n)**行尾符,而非Linux系统要求的LF(\n)行尾。
当shebang行#!/usr/bin/env node末尾带着不可见的回车符\r时,系统会尝试查找名为node\r的解释器程序,这个路径根本不存在,就会抛出"not found"错误,和Node安装状态、PATH配置没有任何关系。
你现在看到的报错是Shell层抛出的,说明脚本根本没被Node加载执行,之前排查Node路径、环境变量的方向是错的。另外你最早贴的executeJs示例脚本里还有个变量名笔误:定义的变量是apJsFile,require时写的是appJsFile,这个问题会在你修好行尾格式之后触发Node运行时的ReferenceError,记得把变量名统一即可。

验证方法

直接用file命令检查文件格式就能确认:

file /node/scraper/bin/scraper

如果输出包含with CRLF line terminators字样,就能100%确认是行尾格式问题。

修复方案

选任意一种方式把文件行尾转成LF格式即可:

  • 用dos2unix工具直接转换(Debian/Ubuntu基础镜像先执行安装命令):
apt update && apt install -y dos2unix
dos2unix /node/scraper/bin/scraper
  • 不想装额外工具的话,直接用sed命令删除行尾的回车符:
sed -i 's/\r$//' /node/scraper/bin/scraper
  • 如果是在Windows上用编辑器写好脚本传到容器里的,直接点击编辑器右下角的行尾标识,把CRLF切换为LF后重新保存上传即可。

转换完成后再执行脚本就能正常被Node加载运行了。

内容的提问来源于stack exchange,提问作者Rando Shtishi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:33:12