7
votes

Comment obtenir un répertoire de travail dans le nœud-webkit

J'ai un programme simple qui peut être exécuté à partir de la ligne de commande. Ce programme est destiné à une prévisualisation en direct des fichiers Markdown. Lorsque j'emballe l'application avec xxx

et allant de l'emplacement différent: xxx

Je ne peux pas obtenir le répertoire de travail actuel. < / p> xxx

retourne / TMP / quelque chose ???

Comment puis-je obtenir un répertoire de travail dans le nœud-webkit? Répertoire à partir duquel ./ construction / marknow ../ relative / chemin / à / fichier.md a été appelé.


2 commentaires

Process.Cwd () renvoie exactement ce que je recherche, un chemin absolu, peut-être que c'était une version plus ancienne de Node-webkit?


@ Maslow: Dans ce cas, je pense que vous ne cherchiez peut-être pas de CWD dans la signification traditionnelle du terme - qui est le répertoire où le processus a été démarré par l'utilisateur (qui est généralement différent du répertoire dans lequel l'application est installée). Pouvez-vous confirmer cela?


4 Réponses :


14
votes

Une autre option que vous pourriez essayer si la CWD ne semble pas fonctionner consiste à obtenir le répertoire d'exécution avec quelque chose comme ceci: xxx

Cela devrait vous procurer le répertoire d'exécution de l'EXE. CWD obtient le répertoire temporaire à cause de la manière dont Node-Webkit gère l'ouverture des fichiers d'un répertoire temporaire de chaque exécution.


2 commentaires

path.dirname (process.execpath) pointe vers ./build/ répertoire non au répertoire de travail actuel.


Pour éviter les analyses, utilisez Execpath.replace (/ \\ / g, "/");



6
votes

Je pense que CWD obtient 2 significations différentes:

  1. répertoire où l'application vit
  2. répertoire où l'utilisateur lance l'application de

    dans Shell Scripting Je peux voir la 2e signification appliquée , mais la communauté Node-Webkit semble utiliser le 1er

    Corrigez-moi si je me trompe, mais je pense que vous recherchez le 2e: le chemin où l'utilisateur était lorsque vous appelez à votre application.

    Après quelques tests, j'ai enfin trouvé un moyen qui fonctionne pour moi:

    processus.env.pwd


3 commentaires

processus.env.pwd ne semble pas être disponible lorsque vous construisez votre projet à un exécutable.


@squaretone: Avez-vous observé cela dans une version Windows? J'ai fait une construction pour Mac où le processus.Env.pwd contenait le chemin de l'annuaire que j'étais dans lequel j'ai lancé l'application.


Je ne me souviens pas. Je me développe sur les deux mais essentiellement sous Windows.



1
votes

Comme indiqué dans d'autres réponses, Node-Webkit démarre le processus de nœud avec le mauvais "répertoire de travail actuel" (à partir d'une perspective de ligne de commande quand même).

Comme indiqué ailleurs, processus. env.pwd code> En fait contient ce que nous voulons (lorsque l'application est démarrée à partir de la ligne de commande). Une solution de contournement simple pourrait alors être de suivre ce qui suit dans votre index.html (ou un autre endroit qui est exécuté tôt): P>

<script type="text/javascript">
  if(process.env.PWD) {
    process.chdir(process.env.PWD);
  }
</script>


0 commentaires

1
votes

Si toutes les réponses ont échoué, essayez ceci.

  1. Créer un fichier "Main.Js" et copiez ce code. P>

    // get 'nw.gui' module
    var gui = require('nw.gui');
    
    // get arguments that we passed
    var arr = gui.App.argv;
    
    // nw app.zip __dirname
    //            ^ argv[0]
    alert('current path: [' + arr[0] + ']');
    
  2. Ajouter ce code que vous souhaitez obtenir le chemin actuel p>

    // get child_process module.
    var childproc = require('child_process');
    
    // start process using child_process
    //  with current path string
    // '__dirname' would be not only path
    //  of 'main.js' but also one of 'app.zip'
    //  because 'main.js' and 'app.zip' have same directory
    childproc.exec('nw app.zip ' + __dirname);
    
  3. exécuter "main.js" avec node.js p> li> ol>

    i posté "Comment obtenir le répertoire actuel (chemin actuel) à l'aide de nœud-webkit". p>

    http://hdnua.tistory.com/16 p>

    Il obtient l'exécution du répertoire de fichier zip. p> p>


0 commentaires