2016-11-08 14 views
5

Ilekroć wykonać mój program, pojawia się następujący TypeError:node.js TypeError: Object funkcji Object() {[natywny kod]} ma metodę 'przypisać'

/home/Node-Project/node_modules/sentiment/lib/index.js:31 
     afinn = Object.assign(afinn, inject); 
        ^
TypeError: Object function Object() { [native code] } has no method 'assign' 
    at module.exports (/home/Node-Project/node_modules/sentiment/lib/index.js:31:24) 
    at EventEmitter.<anonymous> (/home/Node-Project/twit4.js:17:9) 
    at EventEmitter.emit (events.js:95:17) 
    at EventEmitter.processTweet (/home/Node-Project/node_modules/ntwitter/lib/twitter.js:242:14) 
    at EventEmitter.emit (events.js:95:17) 
    at EventEmitter.receive (/home/Node-Project/node_modules/ntwitter/lib/parser.js:44:12) 
    at IncomingMessage.<anonymous> (/home/Node-Project/node_modules/ntwitter/lib/twitter.js:258:16) 
    at IncomingMessage.emit (events.js:95:17) 
    at IncomingMessage.<anonymous> (_stream_readable.js:765:14) 
    at IncomingMessage.emit (events.js:92:17) 

Szukałem ale nie jestem w stanie zrozumieć ten błąd.

Czy muszę zainstalować specjalny moduł?

Czy muszę aktualizować węzeł lub npm?

Czy wystąpił błąd w moim programie?

Oto mój program:

var twitter = require('ntwitter'); 
var credentials = require('./credentials3.js'); 
var sentiment = require ('sentiment'); 

var twit = new twitter({ 
    consumer_key: credentials.consumer_key, 
    consumer_secret: credentials.consumer_secret, 
    access_token_key: credentials.access_token_key, 
    access_token_secret: credentials.access_token_secret 
}); 

twit.stream('statuses/filter',{ 'locations':'loc'}, 
function(stream) { 
     stream.on('data', function(tweet) { 
     var twitterSentiment, geoColor; 
     sentiment(tweet.text, function (err, result) { 
      twitterSentiment = result; 
      if (result == 0) { 
       geoColor = '#B5B5B5'; 
      } else if (result < 0) { 
       geoColor = '#FC0828'; 
      } else { 
       geoColor = '#00DE1E'; 
      } console.log(result);    
      }); 

     }); 
    }); 

Czy ktoś mógłby rzucić trochę światła?

+3

* "Czy muszę aktualizować węzła" * Najbardziej prawdopodobne. Którą wersję używasz? Zajrzyj do http://node.green/, aby zobaczyć, czy twoja wersja obsługuje 'Object.assign'. –

Odpowiedz

6

Tylko node.js v4 i powyżej został zbudowany w Object.assign.

Jeśli używasz starszej wersji węzła, można użyć PolyFill jak object.assign.

+0

Lepiej po prostu zaktualizować do bardziej nowoczesnej wersji node.js. – jfriend00

0

Może być, bo jestem już za późno. Zmierzyłem ten sam problem i rozwiązałem go jak poniżej. Pobierz i zainstaluj najnowszą wersję węzła ze strony internetowej nodejs.org. odnieś wideo i sprawdź wersję węzła (węzeł -v), mam nadzieję, że powinna to być wersja 6 +. Mam nadzieję, że rozwiązuje twój problem.

1

Uzyskanie tego rodzaju błędu w projekcie Cordova, dodanie tego kodu rozwiązało mój problem;

if (typeof Object.assign != 'function') { 
    Object.assign = function (target, varArgs) { 
     'use strict'; 
     if (target == null) { 
      throw new TypeError('Cannot convert undefined or null to object'); 
     } 
     var to = Object(target); 
     for (var index = 1; index < arguments.length; index++) { 
      var nextSource = arguments[index]; 

      if (nextSource != null) { 
       for (var nextKey in nextSource) { 
        if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { 
         to[nextKey] = nextSource[nextKey]; 
        } 
       } 
      } 
     } 
     return to; 
    }; 
} 

źródło: https://github.com/auth0/auth0-cordova/issues/46#issuecomment-311923820

Powiązane problemy