我可以将Javascript中的变量传递给child_process.exec命令吗?

我可以将Javascript中的变量传递给child_process.exec命令吗?,javascript,node.js,child-process,Javascript,Node.js,Child Process,我对Node比较陌生,已经参与了一个项目,在这个项目中,用户将在表单中输入他们的名字和姓氏,然后服务器将输出一个文件,文件名为他们的首字母和姓氏(因此John Smith将被称为JSmith) 我试图获取用户输入并将其放入我的命令中,但它无法识别变量,因此我得到一个没有名称的文件。因此,我得到的不是JSmith.txt,而是.txt var name = fields['name'] var nameArray = name.split(' ') var fileName = nameArray

我对Node比较陌生,已经参与了一个项目,在这个项目中,用户将在表单中输入他们的名字和姓氏,然后服务器将输出一个文件,文件名为他们的首字母和姓氏(因此John Smith将被称为JSmith)

我试图获取用户输入并将其放入我的命令中,但它无法识别变量,因此我得到一个没有名称的文件。因此,我得到的不是
JSmith.txt
,而是
.txt

var name = fields['name']
var nameArray = name.split(' ')
var fileName = nameArray[0].charAt(0) + nameArray[1]

process.exec("Start of my command here"+fileName+ ".txt", function(error, stdout, stderr){
    console.log('done')
    console.log('stdout:', stdout);
    console.log('stderr:', stderr);
})

这是要使用的正确函数还是应该使用其他函数?我觉得问题在于变量没有被错误地读取,但我不知道如何传递它。

我正好遇到了您的问题,我的解决方法包括提前连接字符串

var name = fields['name']
var nameArray = name.split(' ')
var fileName = nameArray[0].charAt(0) + nameArray[1]
var command = yourCommand + filename + ".txt" #replace yourCommand here


process.exec(command, function(error, stdout, stderr){
    console.log('done')
    console.log('stdout:', stdout);
    console.log('stderr:', stderr);
})
如果您想通过exec将一个对象(如数组)传递到另一个文件中,您只需要首先对其进行字符串化

var myArray = ['beans', 'toast']
var stringifiedArray = JSON.stringify(myArray)
var command = 'python myModel.py ' + stringifiedArray


process.exec(command, function(error, stdout, stderr){
    console.log('done')
    console.log('stdout:', stdout);
    console.log('stderr:', stderr);
})
在另一个文件(在本例中是一个名为myModel.py的python文件)中,您可以再次解析输入

input = sys.argv[1]   #reading the (first) argument from the shell
data = json.loads(input)

该命令使用空格分隔的参数运行,检查fileName变量,可能是空字符串=)我确信,问题是字段['name']已经是空的。
fields['name']
不是空的。它返回一个基于用户输入的值。