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

如何将Node.js child_process spawn调用的.sh文件移入目录并正常运行

解决方案

1. 调整Node.js的spawn()调用

修改你的Node代码,让它指向shellScripts文件夹里的脚本,同时强制子进程工作目录为项目根目录:

const { spawn } = require('child_process');
const path = require('path');

// 确定项目根目录(如果当前Node脚本在项目根目录,直接用__dirname即可)
const projectRoot = path.resolve(__dirname);

// 调用目标shell脚本
spawn('bash', [path.join(projectRoot, 'shellScripts', 'node1.sh')], {
  stdio: 'inherit',
  shell: true,
  cwd: projectRoot // 确保子进程启动时处于项目根目录
});

如果你的Node脚本不在项目根目录(比如在src文件夹里),把projectRoot改成path.resolve(__dirname, '..'),根据实际目录层级调整即可。

2. 更新Shell脚本内容

把每个.sh文件的内容改成自动定位项目根目录,再执行命令:

#!/bin/bash

# 获取当前脚本所在的绝对目录
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# 项目根目录是脚本目录的上级目录
PROJECT_ROOT=$(cd "$SCRIPT_DIR/.." && pwd)

# 切换到项目根目录
cd "$PROJECT_ROOT"

# 执行你的业务命令,比如npm run dev
npm run dev

这种写法不管你从哪个目录启动脚本,都能精准定位到项目根目录,避免硬编码路径的问题。

3. 收尾验证

  • 将所有.sh文件移动到项目根目录下的shellScripts文件夹
  • 给所有脚本添加可执行权限:chmod +x shellScripts/*.sh
  • 运行Node代码,确认每个脚本都能正常启动npm run dev

内容的提问来源于stack exchange,提问作者Taylor Lepper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:25:17