Nodejs chemins absolus dans les fenêtres avec barre oblique
Puis-je avoir des chemins absolus avec des barres obliques dans windows en nodejs? Je suis en utilisant quelque chose comme ceci :
global.__base = __dirname + '/';
var Article = require(__base + 'app/models/article');
Mais sur windows le de construire est un échec car il est exigeant quelque chose comme C:\Something\Something/apps/models/article
. Je aam à l'aide de webpack. Donc comment faire pour contourner ce problème, de sorte que le nécessitant reste le même c'est à dire __base + 'app/models/src'
?
source d'informationauteur Megh Parikh
Vous devez vous connecter pour publier un commentaire.
Je sais que c'est un peu tard pour répondre, mais je pense que ma réponse vous aidera certains visiteurs.
Dans
Node.js
vous pouvez facilement obtenir votre actuel nom de fichier et son répertoire en utilisant simplement__filename
et__dirname
variables respectivement.Dans le but de corriger l'avant et l'arrière, la barre oblique en conséquence de votre système, vous pouvez utiliser
path
module deNode.js
Comme ici c'est un loupé chemin et je veux qu'il soit correct si je veux l'utiliser sur mon serveur. Ici le
path
module de tout faire pour vousSi vous voulez que le chemin absolu d'un fichier, vous pouvez également utiliser
resolve
fonction depath
moduleJe l'ai enfin fait comme ceci:
Et puis d'exiger
var Article = require(__base + 'app/models/article');
. Il utilise le package npm slash (qui remplace les barres obliques inverses par des barres obliques dans les chemins et gère plus de cas)Je recommande contre cela, car il est en train de colmater le nœud lui-même, mais... bien, pas de changements dans la façon dont vous besoin de choses.
Voici deux-liner pour la totalité du chemin de la racine avec toutes les barres obliques dans Windows (Windows 8 dans mon cas) avec seulement
path
Nœud du module:root
va vous montrer le chemin complet vers le fichier où vous avez appelé la ci-dessuspath.resolve()
plus tout chemin ci-dessous, correspondant à l'argument(./)
.replace
utilise/\\/g
regex pour remplacer toutes les instances de\
dans lepath.resolve()
résultat.C'est pratique, car avec
path.resolve()
vous obtenir le chemin d'accès souhaité dynamiquement résolu.replace()
est originaire JS fucntion, pas besoin de charger autre chose.@Megin:
juste faire
global.__base = __dirname.replace(/\\/g, '/') + '/';
, et puis le problème de la mêmerequire
déclaration.