1

node.js 的 child_process 模块无法识别 linux 的 'rm' 命令。我像使用它一样

var exec = require('child_process').exec;
var child = exec('rm ' + ImgDir + '/formatted-*', function(error, stdout, stderr){});

但这说:

stderr : 'rm' 不是内部或外部命令、可运行程序或批处理文件。

有人可以帮忙吗?

4

2 回答 2

0

检查命令尝试以哪个用户身份执行。然后检查它是否在该用户的$PATH如果不添加到该用户的$PATH. 以其他用户身份登录:

sudo -u username /bin/bash

您现在将拥有一个作为该用户的控制台。现在尝试使用该命令。

这是你的理由。它很可能基于您的发行版 - 不同的发行版对不同的程序有不同的“设置”。

于 2013-07-09T13:42:50.113 回答
0

您似乎正在尝试在 Windows 系统上执行 Linux 命令。如果您想以适用于所有支持的操作系统的方式执行文件系统操作,则应使用fs 模块而不是启动子进程。

来自文档:

var fs = require('fs');
fs.unlink("/path/to/file", function(err){
    // do stuff after you've deleted your file
    // or just resolve a promise and go on with your day
})

如果要烘烤整个目录,请使用 fs.rmdir

fs.rmdir("/path/to/directory", function(err){
    // do stuff after you've deleted your directory
})

另一件需要注意的是,fs.unlink它不允许使用通配符或正则表达式,因此您将要使用fs.readfiles枚举文件,然后枚举unlink要删除的文件。

于 2013-07-09T14:22:06.357 回答