Page 1 of 1

Problemas con Node.js y NPM

Posted: Sat Apr 22, 2017 6:20 pm
by ImHarvol
Buenas, llevo unos días intentando conseguir que node-minecraft-protocol funcione en mi RPI. El caso es que esta escrito en JavaScript, asi que tengo que usar npm para descargar los paquetes, y nodejs / node para correrlos. La cosa es que estoy recibiendo muchos problemas al usarlos.
Empecemos desde una RPI con la ultima versión de raspbian.
Primero instalo nodejs y npm poniendo sudo apt-get install nodejs npm en la terminal
Uno de los problemas viene cuando voy a ver la versión de node poniendo node -v en la terminal, a lo que la terminal responde que el comando no se encontró. Busqué información, y encontré este hilo nodejs vs node on ubuntu 12.04, en el que ponía que debía poner estos comandos en la terminal.

Code: Select all

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs
Después de esto ya funcionaba node -v, me devolvía la versión. Reinstale npm (sudo apt-get install npm). Después de todo esto, parecía que node, nodejs y npm funcionaban correctamente.
Pero ¿Por que en la mayoría de guías que he visto, con poner sudo apt-get install nodejs npm, ya funcionaba node -v, y cuando yo lo hacia en mi RPI, no funcionaba, pero nodejs -v si que funcionaba? ¿Hay alguna diferencia entre nodejs y node? ¿O es lo mismo?

Después de esto, pense que ya estaba todo, asi que fui a descargarme el paquete de node-minecraft-protocol poniendo en la terminal sudo npm install minecraft-protocol. Parecía que se había instalado correctamente. Lo que no entiendo, es por que siempre que instalo algo con npm salen tantos mensajes de WARN como este npm WARN engine mineflayer@2.1.1: wanted: {"node":">=4"} (current: {"node":"0.10.29","npm":"1.4.21"})(aviso, que ese es un paquete distinto a node-minecraft-protocol).

Bien, después de esto fui a ver si funcionaba este script

Code: Select all

var mc = require('minecraft-protocol');
var client = mc.createClient({
  host: "localhost",   // optional
  port: 25565,         // optional
  username: "email@example.com",
  password: "12345678",
});
client.on('chat', function(packet) {
  // Listen for chat messages and echo them back.
  var jsonMsg = JSON.parse(packet.message);
  if(jsonMsg.translate == 'chat.type.announcement' || jsonMsg.translate == 'chat.type.text') {
    var username = jsonMsg.with[0].text;
    var msg = jsonMsg.with[1];
    if(username === client.username) return;
    client.write('chat', {message: msg});
  }
});
Probé a poner node script.js, y me devolvió este error

Code: Select all

pi@user:~ $ node xd.js 

/home/pi/node_modules/minecraft-protocol/src/index.js:3
const Client = require('./client');
^^^^^
SyntaxError: Use of const in strict mode.
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/pi/xd.js:1:72)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
Busque sobre el error, y encontré este hilo (SyntaxError: Use of const in strict mode), así que probé a usar node --harmony script.js, pero me devolvió este error

Code: Select all

pi@user:~ $ sudo node --harmony xd.js 

/home/pi/node_modules/minecraft-protocol/src/client.js:13
class Client extends EventEmitter
^^^^^
SyntaxError: Unexpected reserved word
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/pi/node_modules/minecraft-protocol/src/index.js:3:16)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
Aquí ya me quede estancado, no se si necesito descargar algun paquete o algo. Parece mas un problema con el código que con npm, node, y nodejs.
¿He leído que hay que usar babel, pero tendría que cambiar todo el código del paquete para poder usar babel?
Gracias por la atención, y perdonad mi ignorancia :?