De fichiers relatifs au système d'écriture de chemin d'accès dans le module
J'ai un exécutable node /script javascript qui a un boolean debug, si défini à true, un couple de fichiers doivent être écrites. Cet exécutable est aussi le nœud du module. Selon le répertoire de travail de l'utilisateur qui exécute le script, il semble que la fonction ne peut pas trouver le répertoire d'écrire des fichiers dans.
Le module est structuré comme ceci
output/
lib/
helpers.js
index.js
Mon raisonnement serait d'avoir le chemin d'accès.
helper.write = function(data,filename){
if(typeof data !== "string") data = JSON.stringify(data);
fs.writeFileSync("./output/"+filename, data);
};
Toutefois cela fonctionne lors de l'exécution du script à partir de l'intérieur de la node_module dossier
fs.writeFileSync("process.cwd()+"/node_modules/the_module/output/"+filename, data);
Comme ce
node ./my_app/node_modules/the_module/index.js
Cela devient encore plus confuse si les modules est utilisé dans un autre fichier exécutable qui utilise la bibliothèque.
node ./my_app/run.js
Est-il un moyen d'enregistrer le fichier indépendant de toutes ces variables?
OriginalL'auteur ThomasReggi | 2013-03-06
Vous devez vous connecter pour publier un commentaire.
Si je comprends correctement à la question, vous voulez toujours écrire à un chemin d'accès relatif au script courant. Pour obtenir le nom du répertoire que le script en cours d'exécution réside dans, vous pouvez utiliser
__dirname
comme suit:Cela étant dit, je ne pense pas que c'est une bonne pratique de l'écriture de fichiers à l'intérieur de votre
node_modules
répertoire. Je recommande à votre module exigent le chemin d'accès complet à un fichier quelque part d'autre dans le système de fichiers. Si l'appelant désire écrire à un répertoire de sortie dans sa propre arborescence du projet, vous pouvez utiliser la même__dirname
truc.OriginalL'auteur David Weldon