我已经使用 express(WebStorm 默认)设置了一个基本的 Node.js 服务器,并尝试根据请求(来自 pebble 手表)运行 python 脚本,并以以下形式发送返回的 json:
{"willCollide": 1, "time": 6000, "strength": "NA"}
回到手表。我刚刚开始研究 JavaScript,所以经验很少,并且希望我做的大部分都不正确。目前我遇到“错误:发送后无法设置标头”,并且想知道根据请求向用户发送 json 的正确方法是什么?我还想知道这是否确实是将数据从 python 脚本发送到 Pebble 手表的最佳方法。下面是在请求中调用的 JavaScript 文件中的代码:
var express = require('express');
var router = express.Router();
var PythonShell = require('python-shell');
var options = {
mode: 'json'
};
var rain_data;
function run_py_script(data){
var pyshell = new PythonShell('dummy.py', options);
var ret_val;
/* Dummy data doesnt matter atm */
pyshell.send("dummy data"); // change to data
pyshell.on('message', function(message){
console.log(message);
ret_val = message;
console.log(message["willCollide"]); // debug check
});
pyshell.end(function(err){
if (err) {
console.log('error received from python script');
}
console.log('finished script');
});
return ret_val;
}
/* GET rain_track data. */
router.get('/', function(req, res, next) {
rain_data = run_py_script(null);
res.write(rain_data);
res.end();
});
module.exports = router;