Модули Nodejs не работают должным образом на разных устройствах

Я использую twitter streaming api & johnny-five с некоторыми другими модулями http, express& socket.io с arduino uno

Мой скрипт работает нормально на ноутбуке. Но моя продукция будет на планшете. У меня есть две таблетки, и оба реагируют по-разному. На hp omni планшет я получаю следующую ошибку

Также у меня есть arduino-uno подключен к порту COM3 но его показывает устройство, подключенное на COM1

Насколько я знаю, эта ошибка возникает, когда standard firmata не загружается в Arduino. Я загрузил эту программу, и она отлично работает в ноутбуке

На Acer Планшет Я не получаю никаких ошибок, программа запускается прекрасно без каких-либо проблем, но я не получаю твиты с twitter streaming api

Я много раз проверял, он отлично работает на ноутбуке каждый раз, когда я его запускаю, но выдает две разные проблемы с tablets

Вот код, который я использую

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;
        });
        });
    });
});

2 ответа

Решение

Как вы сказали, он отлично работает с другими устройствами, а также смог решить проблему с другим планшетом, возможная причина, по которой я могу подумать, это неправильная установка nodejs или другой modules ты используешь

Попробуй очистить переустановку Nodejs и все modules, Может быть, есть проблема в ваших модулях, а не в вашем коде.

Еще одна причина у вас есть следующая проблема nodejs Поддерживайте две разные версии, обе обрабатывают установку модулей другим способом.

Используйте ту же версию, которую вы используете на своем ноутбуке.

Я решил проблему с HP OMNI планшет вручную johnny-five к какому порту подключен мой arduino, как указано в ОФИЦИАЛЬНОЙ ДОКУМЕНТАЦИИ

new five.Board({ port: "COM3" });//FOR WINDOWS ONLY

Также мне пришлось переустановить все модули, чтобы это работало

(Все еще не работает с планшетом Acer, хотя)

Другие вопросы по тегам