IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Inclure box2d coté server


Sujet :

NodeJS

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Par défaut Inclure box2d coté server
    Salut,

    Je développe un petit jeu tout simple "multijoueur" avec nodeJS et socket.io.
    J'ai un gros problème pour inclure box2d dans mon ficher server.js.
    Le fichier box2d.js possède bien la ligne suivante en dernière ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    module.exports = Box2D;
    Et pour l'inclure dans mon script server.js , j'utilise ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Box2D = require('./box2d.js');
    Seulement , dés que je lance mon server dans ma console , j'obtiens l'erreur suivante:

    Type error : Cannot call method 'write' of undefined
    Et c'est bien le require qui pose problème puisque sans lui je n'obtiens aucune erreur. J'ai même essayé avec le code source trouvé sur cette page :

    http://paal.org/blog/2012/07/06/runn...via-socket-io/

    Mais ça m'affiche exactement la même erreur , je me dis donc que l'erreur vient de mon côté. Pouvez-vous m'aider ?

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Par défaut
    Comme je m'en doutais il s'agit d'un probleme de compatibilité entre ta version de node.js et tes differents modules:
    J'ai fait le test en prenant le code Source sur le lien que t'as posté, et j'ai eu le même problème.
    J'ai eu un peu de mal a le faire fonctionner parcequ'il faut trouver la bonne version de Node, donc vu que le post sur le site etait fait en juillet 2012 avec une version plus veille Ca fonctionne. j'ai reussi a le faire marcher avec la version 0.8.14.
    Pour installer plusieurs versions il y a un module npm qui s'appelle n (sudo npm install n), il s'agit d'un gestionnaire de versions pour node.js.
    pour installer une version de node tu dois faire:
    et pour utiliser cette version
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sudo n use 0.8.14 box2dserver.js
    Pour moi ça marche bien. j'ai l'impression que la derniere version de socket.io qui est sur le npm n'est pas compatible avec node.js.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Par défaut
    Tu aurai la version windows des deux dernières commandes? npm install n fonctionne mais pas la suite , il me dit que n n'est pas reconnu comme commande interne.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Par défaut
    ah oui désolé, ces commandes sont faites pour mac os / linux.
    essaye sans le "sudo".

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Par défaut
    Ouép j'ai essayé mais ça reconnait pas le commande "n" justement.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Par défaut
    Je ne maitrise pas bien la Console Windows, mais en gros, n est un binaire que tu viens d'installer. si t'arrives pas a le lancer c'est parcque la console ne sait pas ou il se trouve.
    il se trouve dans ton dossier node_modules.
    donc execute le depuis ce dossier.et si t'as vraiment des problemes desinstalle node et installe la version 0.8.14 ou passe sous linux ou mac os ^^

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Par défaut
    Ok merci je vais tester ça. Mais j'aurai pas meilleur temps d'adapter mon fichier box2d.js pour qu'il puisse être inclus avec la dernière version de node ? Parce que du coup je serai obligé de rester à jamais sur la version 0.8 .

  8. #8
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Par défaut
    ca depend de ce que tu veux faire.

    euh, test ton premier programme avec:
    var Box2D = require('box2d');
    et si il y a encore un message d'erreur poste le en entier (pas juste la derniere ligne)

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Par défaut
    Voilà ce que j'obtiens :

    module.js:340
    throw err;
    ^
    Error: Cannot find module 'box2d'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\wamp\www\JeuHTML5\js\server.js:1:75)
    at Module._compile (module.js:456:26)
    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 Function.Module.runMain (module.js:497:10)

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Par défaut
    cela signifie que tu n'as pas "installer" box2d avec npm.
    la version qui est sur le npm (node package manager), m'a l'air fonctionnel.
    donc fait :et apres execute de nouveau ton prog

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Par défaut
    L'erreur n'apparait plus , mais j'en ai une autre quand je veux déclarer dans mon fichier les élements de box2D pour pouvoir créer un world toussa toussa.
    Je met ça dans mon code après "var Box2D = require('box2d');" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    var b2World = Box2D.Dynamics.b2World;
    var b2Vec2 = Box2D.Common.Math.b2Vec2;
    var b2AABB = Box2D.Collision.b2AABB;
    var b2BodyDef = Box2D.Dynamics.b2BodyDef;
    var b2Body = Box2D.Dynamics.b2Body;
    var b2FixtureDef = Box2D.Dynamics.b2FixtureDef;
    var b2Fixture = Box2D.Dynamics.b2Fixture;
    var b2MassData = Box2D.Collision.Shapes.b2MassData;
    var b2PolygonShape = Box2D.Collision.Shapes.b2PolygonShape;
    var b2CircleShape = Box2D.Collision.Shapes.b2CircleShape;
    var b2DebugDraw = Box2D.Dynamics.b2DebugDraw;      
    var b2RevoluteJointDef=Box2D.Dynamics.Joints.b2RevoluteJointDef;
    var b2DistanceJointDef = Box2D.Dynamics.Joints.b2DistanceJointDef;
    var b2MouseJointDef =  Box2D.Dynamics.Joints.b2MouseJointDef;
    Et j'obtiens cette erreur :

    var b2World = Box2D.Dynamics.b2World;
    ^
    TypeError: Cannot read property 'b2World' of undefined
    at Object.<anonymous> (C:\wamp\www\JeuHTML5\js\server.js:2:29)
    at Module._compile (module.js:456:26)
    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 Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3
    Donc je ne peux pas accéder à Box2D.Dynamics et c'est pareil pour les lignes suivantes.

  12. #12
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Par défaut
    Houra déjà le premier probleme est résolu.
    je ne m'y connais pas en box2d.
    Ca m'a l'air d'etre un probleme de compatibilité entre ton code et la version de box2d.
    Mais sur quel code te bases-tu?
    tu suis un tuto? si oui lequel?
    tu te referes a une doc, ou t'as recuperer le code que tu me montres d'une page web?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Par défaut
    En fait le problème c'est que je déclarais pas les chemins en fonction du module box2d mais d'un script box2d. Si t'as pas de notions avec box2d je vais pas t'en demander plus , c'est à moi de me démerder avec mes codes box2d maintenant.

    En tous cas merci tu m'as bien aidé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Websocket, coté server : erreur du handshake et du getheaders
    Par vinze60 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 05/05/2012, 13h15
  2. Process start coté server
    Par feladan dans le forum VB.NET
    Réponses: 1
    Dernier message: 09/11/2007, 10h08
  3. Ajouter un header à un tableau coté server
    Par Alec6 dans le forum JSF
    Réponses: 4
    Dernier message: 20/01/2007, 22h38
  4. coût de possession de SQL Server 2000
    Par rollins_ng dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/09/2006, 12h29
  5. [PHP-JS] Page d'attente / construction coté server
    Par mcheck dans le forum Langage
    Réponses: 6
    Dernier message: 24/08/2006, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo