Windows下Node.js exec执行C++程序报错:'.'未被识别
解决Windows下Node.js exec运行生成的.exe程序时'.'不被识别的问题
问题根源
Windows的命令行环境(CMD或PowerShell)不支持类Unix系统中用./表示当前目录的写法,这就是触发. is not recognized...错误的原因。
修复方案
将执行命令中的./${jobId}.exe替换为Windows兼容的写法,同时修正原代码中模板字符串的语法错误(末尾缺失闭合反引号):
exec(`g++ ${fileData.filepath} -o ${outPath} && cd ${outputPath} && ${jobId}.exe`, (error, stdout, stderr) => { if (error) { reject({ error, stderr }); } if (stderr) { reject(stderr); } resolve(stdout); } );
额外优化建议
可以省略cd ${outputPath}的步骤,直接使用生成的exe文件的完整路径执行,避免目录切换可能带来的潜在问题:
exec(`g++ ${fileData.filepath} -o ${outPath} && ${outPath}`, (error, stdout, stderr) => { if (error) { reject({ error, stderr }); } if (stderr) { reject(stderr); } resolve(stdout); } );
因为outPath本身就是生成的.exe文件的完整路径,直接执行它无需切换工作目录,逻辑更简洁可靠。
内容的提问来源于stack exchange,提问作者jkkCoder
相关产品推荐
相关产品推荐

