Modo corretto per servire il file presente in node_modules

1

Dire che ho questa struttura:

project/
  node_modules/
         xxx/
           asset.js
           index.html 
  app.js

e in app.js ho:

const express = require('express');
const app = express();

app.use('/docs', (req,res) => {
   res.render(require.resolve('./node_modules/xxx/index.html'));
});

app.listen(3000);

il problema è che dal momento che il server è probabilmente in esecuzione dalla directory root del progetto, il file index.html non avrà il percorso giusto per raccogliere il file assets.js.

Ad esempio, in index.html se la base è impostata in questo modo:

<base href="/">

che non funzionerà. Potrei provare a usare:

<base href="node_modules/xxx/">

Un'altra soluzione sarebbe quella di unire tutto insieme in modo che il file index.html non abbia bisogno di fare richieste per le risorse statiche, ma sto cercando una buona soluzione per far sì che la risoluzione del percorso funzioni in qualche modo in modo generico. Ad esempio, se il server express non viene avviato nella root del progetto, ma in un'altra sottodirectory.

    
posta MrCholo 08.12.2018 - 06:22
fonte

1 risposta

-1

Quindi penso che ci siano due diversi modi per risolvere questo problema:

  1. usa gli URL assoluti per i file sul WWW (ad esempio, usa un CDN), anziché gli url relativi ai file locali

  2. concatena tutto in un unico file, quindi puoi pubblicare quel file e non preoccuparti di alcun url relativo in quel file html

Con un'app Angular7, ho scelto l'opzione n. Puoi costruire una produzione in questo modo: link

e vedi anche: link

    
risposta data 08.12.2018 - 11:15
fonte

Leggi altre domande sui tag