Por lo general, no desea exponer ninguna de sus rutas internas de cómo está estructurado su servidor al mundo exterior. Lo que puede hacer es hacer una /scripts
ruta estática en su servidor que recupere sus archivos de cualquier directorio en el que residan. Entonces, si sus archivos están en "./node_modules/bootstrap/dist/"
. Luego, la etiqueta del script en sus páginas se ve así:
<script src="/scripts/bootstrap.min.js"></script>
Si estaba utilizando express con nodejs, una ruta estática es tan simple como esta:
app.use('/scripts', express.static(__dirname + '/node_modules/bootstrap/dist/'));
Luego, cualquier solicitud del navegador se /scripts/xxx.js
obtendrá automáticamente de su dist
directorio en __dirname + /node_modules/bootstrap/dist/xxx.js
.
Nota: Las versiones más nuevas de NPM ponen más cosas en el nivel superior, no anidadas tan profundamente, por lo que si está utilizando una versión más nueva de NPM, los nombres de ruta serán diferentes a los indicados en la pregunta del OP y en la respuesta actual. Pero, el concepto sigue siendo el mismo. A averiguar donde los archivos están ubicados físicamente en la unidad de servidor y de hacer una app.use()
con express.static()
para hacer un pseudo-camino a esos archivos para que no se está exponiendo a la organización del sistema de archivos del servidor real para el cliente.
Si no desea hacer una ruta estática como esta, entonces probablemente sea mejor que simplemente copie los scripts públicos en una ruta que su servidor web trate como /scripts
o la designación de nivel superior que desee usar. Por lo general, puede hacer que esta copia sea parte de su proceso de compilación / implementación.
Si desea hacer público solo un archivo en particular en un directorio y no todo lo que se encuentra en ese directorio, puede crear manualmente rutas individuales para cada archivo en lugar de utilizarlo express.static()
como:
<script src="/bootstrap.min.js"></script>
Y el código para crear una ruta para eso
app.get('/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});
O, si aún desea delinear rutas para scripts /scripts
, puede hacer esto:
<script src="/scripts/bootstrap.min.js"></script>
Y el código para crear una ruta para eso
app.get('/scripts/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});