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 :

Exécution d'un fichier C++ en Node.js


Sujet :

NodeJS

  1. #1
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut Exécution d'un fichier C++ en Node.js
    je suis en train de développer un API REST avec express.js runtime sur node.JS. Donc mon projet nécessite un bloque du code développé en C++(main.cpp) et que l'API doit exécuter ce code là. alors j'essayé donc avec ce code qui se trouve ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var exec = require('child_process').exec;
    var cmd = 'gcc main.cpp -o main'; // erreur est ici
    exec(cmd, function(error, stdout, stderr) 
         {
      // Le résultat est dans stdout
      console.log('stdout: '+stdout);
       console.log('stderr: '+stderr);
             if(error !== null){
                    console.log('Ops Problem of exec : ' +error);                
              }
          });
    Mais lorsque j'exécute ce petit programme il affiche ce problème (il ne connait pas la commande gcc ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     stdout: 
    stderr: gcc: error: main.cpp: Aucun fichier ou dossier de ce type
    gcc: fatal error: no input files
    compilation terminated.
     
    Ops Problem of exec : Error: Command failed: gcc: error: main.cpp: Aucun fichier ou dossier de ce type
    gcc: fatal error: no input files
    compilation terminated.
    j'en sais pas comment résoudre ce probléme pour rendre la commande "gcc" exécutable.
    Merci

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Gcc est bel et bien appelé puisqu'il t'envoie des erreurs de compilation. À mon avis c'est plutôt un problème de chemin. Node cherche le fichier main.cpp dans le répertoire depuis lequel il est lancé. Tu peux utiliser process.cwd() pour connaître ce répertoire.

    Si tu veux que ta commande soit exécutée dans un répertoire particulier, tu dois passer une option cwd en paramètre à la méthode exec.

    Si tu veux te former : cours et tutoriels pour apprendre Node.js :https://nodejs.developpez.com/cours/ et Node.js : le livre du débutant : https://nodejs.developpez.com/tutori...ivre-debutant/
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut
    merci pour ta réponse , mais toujours le problème concerne le path du fichier "main.cpp" (je cherche à exécuter ce fichier a travers le Node.JS).
    j'ai un fichier routes.js (contient ce petit programme) qui se trouve dans "home/usr/Public/server/routes "et concernant le fichier main.cpp il se trouve dans "routes/project/test".

    s'il vous plait tu sais comment spécifié le path du fichier main.cpp ?

    j'ai essayé ce path mais toujours le même problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    exec('gcc main.cpp -o main',{cwd: '/project/test'},function(err, stdout, stderr) {
                    console.log(" résultat: " + stdout); 
                    console.log(err);
    }
     
    **le problème: **
    Error: Command failed: gcc: error: main.cpp: Aucun fichier ou dossier de ce type
    Merci

  4. #4
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Attention, tu as écrit '/project/test', c'est un chemin absolu (il commence par /).

    Retire juste ce / et je pense que ça devrait aller
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut
    rien à changer toujours le même problème. est ce qu'il manque des modules à installer !
    j'essayé une autre façon:
    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
    16
    17
    18
    19
    var child_process = require('child_process');
     
    var exec = child_process.exec;
     
    var path ='project/test';
     
    //g++ -g main.cpp
     
    exec('gcc main.cpp -o main  '+path, function(err,stout,stderr) {
     
        if (err) {
     
           console.log('error' +err);
     
            return
         }
      console.log('<< Result of >>:'+stdout);
     
    });
    Message d'erreur;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Error: Command failed: gcc: error: main.cpp: Aucun fichier ou dossier de ce type
    gcc: error: project/test: Aucun fichier ou dossier de ce type
    gcc: fatal error: no input files
    compilation terminated.

  6. #6
    Membre émérite
    Avatar de Gnuum
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Billets dans le blog
    1
    Par défaut
    Quel est le chemin absolu du fichier project/test? Pour corriger cette erreur, il semble qu'il faille juste mettre un chemin correct.

  7. #7
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var path = '/home/usr/Public/server/routes/project/test';
     
    exec('gcc main.cpp -o main', { cwd: path }, function(err, stout, stderr) {
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut
    Citation Envoyé par Gnuum Voir le message
    Quel est le chemin absolu du fichier project/test? Pour corriger cette erreur, il semble qu'il faille juste mettre un chemin correct.
    en effet, le dossier "project/test" se trouve dans le dossier "home/usr/public/server/routes (ou se trouve le fichier routes.js)/project/test/main.cpp" ceci le chemin principale du fichier.

  9. #9
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut
    j'ai essayé votre proposition, mais il affiche ce message d'erreur
    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
     
    1-cd: Error: Command failed: /bin/sh: 1: /home/usr/Public/server/routes/project/test: Permission denied
     
    POST /up 200 73.156 ms - 33
     
    2- pwd: null : /home/usr/Public/server
     
    résultat dans le Stdout: 
    { [Error: Command failed: In file included from main.cpp:1:0:
     
    mainwindow.h:5:33: fatal error: QtWidgets/QMainWindow: Aucun fichier ou dossier de ce type
     #include <QtWidgets/QMainWindow>
                                     ^
    compilation terminated.
    ] killed: false, code: 1, signal: null }
    Mon travail :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    exec = require('child_process').exec;
     
     var path = '/home/usr/Public/server/routes/project/test';
     
    exec(path, function(err, stdout, stderr) {
     
            console.log("1-cd: " + err + " : "  + stdout);
     
            exec("pwd", function(err, stdout, stderr) {
     
                console.log("2- pwd: " + err + " : " + stdout);
     
                exec('gcc main.cpp -o main',{cwd: path},function(err, stdout, stderr) {
     
                    console.log(" résultat dans le Stdout: " + stdout); 
     
                    console.log(err);
     
                });
     
            });
     
        });

  10. #10
    Membre émérite
    Avatar de Gnuum
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Billets dans le blog
    1
    Par défaut
    Il faut mettre les bons droits sur le(s) fichier(s) avec les commandes chmod et chown.

  11. #11
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Le message 1 est normal :
    Tu essayes d'exécuter un dossier (en l'occurence le dossier test), ça n'a pas de sens pour le shell.

    Ensuite, la commande gcc est appelée, et tu obtiens une erreur de compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Error: Command failed: In file included from main.cpp:1:0:
     
    mainwindow.h:5:33: fatal error: QtWidgets/QMainWindow: Aucun fichier ou dossier de ce type
     #include <QtWidgets/QMainWindow>
                                     ^
    compilation terminated.
    C'est apparemment un problème de chemin d'inclusion. Est-ce que tu obtiens le même message quand tu compiles toi-même (c'est-à-dire, quand tu lances gcc à la main dans un terminal) ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/05/2010, 11h10
  2. Réponses: 2
    Dernier message: 05/11/2009, 11h58
  3. Réponses: 3
    Dernier message: 21/07/2008, 16h15
  4. problème d'exécution de fichier
    Par kris1 dans le forum C
    Réponses: 15
    Dernier message: 17/01/2008, 09h16

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