Nodejs 模块在不同设备中无法按预期工作
Nodejs modules not working as expected in different devices
我正在使用 twitter streaming api
& johnny-five
和一些其他模块 http
, express
& socket.io
和 arduino uno
我的脚本在笔记本电脑上运行良好。但我的作品将在平板电脑上进行。我有两台平板电脑,两者的反应都不同。在 hp omni
平板电脑上,我收到以下错误
另外我在端口 COM3
上连接了 arduino-uno
但它显示设备连接在 COM1
据我所知,这个错误是在 standard firmata
没有在 arduino 中上传时引起的。我已经上传了这个程序,它在笔记本电脑上运行良好
在 Acer
平板电脑上,我没有收到任何错误程序可以正常启动,没有任何问题,但我没有收到 twitter streaming api
的推文
我已经交叉检查了很多次 运行每次我 运行 它在笔记本电脑上都很好 运行 但是 tablets
有两个不同的问题
Here is the code i am using
var Twitter = require('twitter');
var five = require("johnny-five");
var express = require('express')
, app = express()
, http = require('http')
, server = http.createServer(app)
, io = require('socket.io').listen(server);
server.listen(8080);
// routing
app.use(express.static(__dirname + '/http'));
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', "http://"+req.headers.host+':80');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
next();
}
);
var client = new Twitter({
consumer_key: 'abc',
consumer_secret: 'abc',
access_token_key: 'abc',
access_token_secret: 'abc'
});
var board = new five.Board();
board.on("ready", function() {
this.pinMode(5, five.Pin.OUTPUT);
this.pinMode(10, five.Pin.INPUT);
//Ask to visit url
console.log("Visit http://localhost:8080");
var randomHashtag = Math.floor((Math.random() * 10000) +1);
var count = 0;//Initialize counter
io.sockets.on('connection', function (socket) {
console.log('Ready to recieve tweets');//Prints Message when Socket.io is ready to recieve tweets
io.emit('stream',{number:randomHashtag});//Send random no when socket initzilize
client.stream('statuses/filter', {track: '#tweetMe'}, function(stream) {
stream.on('data', function(tweet) {
if(tweet.text.search(randomHashtag) > 0){
count++;//Increment pending tweets
randomHashtag = Math.floor((Math.random() * 10000) +1);
io.emit('stream',{number:randomHashtag});
board.digitalWrite(5,1);
console.log(tweet.text);
}
else{
console.log("Tweet Without random No");
}
});
stream.on('error', function(error) {
throw error;
});
});
});
});
我通过手动告诉 johnny-five
我的 arduino 连接到哪个端口解决了 HP OMNI
平板电脑的问题,如 OFFICIAL DOCUMENTATION
中所述
new five.Board({ port: "COM3" });//FOR WINDOWS ONLY
我还必须重新安装所有模块才能使其正常工作
(虽然仍然无法使用 Acer 平板电脑)
正如您所说,它在其他设备上运行良好,并且还设法解决了其他平板电脑的问题,我能想到的可能原因是 nodejs
或您正在使用的其他 modules
安装损坏
尝试清除 Nodejs
和所有 modules
的重新安装。可能是你的模块有问题,而不是你的代码。
您遇到以下问题的另一个原因 nodejs
维护两个不同的版本
两者都以不同的方式处理模块的安装。
使用您在笔记本电脑中使用的相同版本。
我正在使用 twitter streaming api
& johnny-five
和一些其他模块 http
, express
& socket.io
和 arduino uno
我的脚本在笔记本电脑上运行良好。但我的作品将在平板电脑上进行。我有两台平板电脑,两者的反应都不同。在 hp omni
平板电脑上,我收到以下错误
另外我在端口 COM3
上连接了 arduino-uno
但它显示设备连接在 COM1
据我所知,这个错误是在 standard firmata
没有在 arduino 中上传时引起的。我已经上传了这个程序,它在笔记本电脑上运行良好
在 Acer
平板电脑上,我没有收到任何错误程序可以正常启动,没有任何问题,但我没有收到 twitter streaming api
我已经交叉检查了很多次 运行每次我 运行 它在笔记本电脑上都很好 运行 但是 tablets
Here is the code i am using
var Twitter = require('twitter');
var five = require("johnny-five");
var express = require('express')
, app = express()
, http = require('http')
, server = http.createServer(app)
, io = require('socket.io').listen(server);
server.listen(8080);
// routing
app.use(express.static(__dirname + '/http'));
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', "http://"+req.headers.host+':80');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
next();
}
);
var client = new Twitter({
consumer_key: 'abc',
consumer_secret: 'abc',
access_token_key: 'abc',
access_token_secret: 'abc'
});
var board = new five.Board();
board.on("ready", function() {
this.pinMode(5, five.Pin.OUTPUT);
this.pinMode(10, five.Pin.INPUT);
//Ask to visit url
console.log("Visit http://localhost:8080");
var randomHashtag = Math.floor((Math.random() * 10000) +1);
var count = 0;//Initialize counter
io.sockets.on('connection', function (socket) {
console.log('Ready to recieve tweets');//Prints Message when Socket.io is ready to recieve tweets
io.emit('stream',{number:randomHashtag});//Send random no when socket initzilize
client.stream('statuses/filter', {track: '#tweetMe'}, function(stream) {
stream.on('data', function(tweet) {
if(tweet.text.search(randomHashtag) > 0){
count++;//Increment pending tweets
randomHashtag = Math.floor((Math.random() * 10000) +1);
io.emit('stream',{number:randomHashtag});
board.digitalWrite(5,1);
console.log(tweet.text);
}
else{
console.log("Tweet Without random No");
}
});
stream.on('error', function(error) {
throw error;
});
});
});
});
我通过手动告诉 johnny-five
我的 arduino 连接到哪个端口解决了 HP OMNI
平板电脑的问题,如 OFFICIAL DOCUMENTATION
new five.Board({ port: "COM3" });//FOR WINDOWS ONLY
我还必须重新安装所有模块才能使其正常工作
(虽然仍然无法使用 Acer 平板电脑)
正如您所说,它在其他设备上运行良好,并且还设法解决了其他平板电脑的问题,我能想到的可能原因是 nodejs
或您正在使用的其他 modules
安装损坏
尝试清除 Nodejs
和所有 modules
的重新安装。可能是你的模块有问题,而不是你的代码。
您遇到以下问题的另一个原因 nodejs
维护两个不同的版本
两者都以不同的方式处理模块的安装。
使用您在笔记本电脑中使用的相同版本。