我对Node比较新,并且已经放在一个项目中,用户将在表单中输入他们的名字和姓氏,然后服务器将输出一个文件,其中包含他们的第一个名字和他们的姓氏作为文件名(所以约翰史密斯将成为JSmith)。
我正在尝试接受用户输入并将其放在我的child_process.exec
命令中,但它无法识别变量,所以我得到一个没有名字的文件。因此,我只是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);
})
这是正确使用的功能还是我应该使用其他功能?我觉得问题在于变量没有被错误地读取,但我不知道如何传递它。
答案 0 :(得分:1)
我遇到了你的问题,我的解决方法包括提前连接字符串。
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)