Habituellement, vous ne voulez exposer aucun de vos chemins internes pour la structure de votre serveur au monde extérieur. Ce que vous pouvez faire est de créer une /scripts
route statique dans votre serveur qui récupère ses fichiers à partir de n'importe quel répertoire où ils se trouvent. Donc, si vos fichiers sont dedans "./node_modules/bootstrap/dist/"
. Ensuite, la balise de script dans vos pages ressemble à ceci:
<script src="/scripts/bootstrap.min.js"></script>
Si vous utilisiez express avec nodejs, une route statique est aussi simple que ceci:
app.use('/scripts', express.static(__dirname + '/node_modules/bootstrap/dist/'));
Ensuite, toutes les demandes du navigateur /scripts/xxx.js
seront automatiquement récupérées de votre dist
répertoire à l'adresse __dirname + /node_modules/bootstrap/dist/xxx.js
.
Remarque: les nouvelles versions de NPM placent plus de choses au niveau supérieur, pas imbriquées si profondément, donc si vous utilisez une version plus récente de NPM, les noms de chemin seront différents de ceux indiqués dans la question du PO et dans la réponse actuelle. Mais, le concept est toujours le même. Vous découvrez où les fichiers se trouvent physiquement sur votre lecteur de serveur et vous créez un app.use()
avec express.static()
pour créer un pseudo-chemin d'accès à ces fichiers afin de ne pas exposer l'organisation réelle du système de fichiers du serveur au client.
Si vous ne souhaitez pas créer une route statique comme celle-ci, il vaut probablement mieux copier les scripts publics vers un chemin que votre serveur Web traite comme /scripts
ou quelle que soit la désignation de niveau supérieur que vous souhaitez utiliser. Habituellement, vous pouvez intégrer cette copie à votre processus de génération / déploiement.
Si vous souhaitez rendre public un seul fichier particulier dans un répertoire et que tout ce qui ne s'y trouve pas, vous pouvez créer manuellement des itinéraires individuels pour chaque fichier plutôt que d'utiliser, express.static()
par exemple:
<script src="/bootstrap.min.js"></script>
Et le code pour créer un itinéraire pour cela
app.get('/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});
Ou, si vous souhaitez toujours délimiter les routes pour les scripts avec /scripts
, vous pouvez le faire:
<script src="/scripts/bootstrap.min.js"></script>
Et le code pour créer un itinéraire pour cela
app.get('/scripts/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});