从其他目录用绝对路径执行Node.js脚本报MODULE_NOT_FOUND错误如何解决?
问题原因
Node 对入口文件的路径解析规则非常明确:
- 如果你执行
node <路径>时传入的是绝对路径(以 / 开头),Node 会直接按该路径查找文件,不会和当前工作目录拼接 - 只有你传入的是相对路径(直接写文件名、以 ./ 或 ../ 开头)时,Node 才会基于当前工作目录(也就是你说的
/Users/bob/wd/)拼接路径查找文件
你现在的报错明确说明 Node 实际拿到的入口参数只有 test.js,没有拿到完整的绝对路径 /Users/bob/appium/test.js。
排查步骤
- 首先检查你 bash 脚本里构造 Node 执行命令的逻辑:在执行 Node 命令前加一行打印逻辑,比如你把脚本路径存在变量
TEST_SCRIPT里,就加echo "执行的命令是:node $TEST_SCRIPT",确认输出的是不是完整的node /Users/bob/appium/test.js,绝大多数情况都是这里的变量取值错误,要么是空值,要么只取到了文件名部分。 - 手动验证路径有效性:直接在
/Users/bob/wd/目录下打开终端,执行node /Users/bob/appium/test.js,如果正常输出Here I am,就完全排除 Node 本身的问题,100% 是你的 bash 脚本构造命令出错。 - 特殊场景排查:如果路径里有空格、特殊字符,记得用引号包裹路径,避免 bash 解析时把路径拆分成多个参数,导致 Node 只拿到末尾的文件名。
内容的提问来源于stack exchange,提问作者Wrog
相关产品推荐
相关产品推荐

