Webpack causa un errore di syntax nell’output del bundle

Ho lottato per un po ‘ora con un problema che credo sia causato da Webpack .

Essenzialmente, ho una app basata su nodo che sto collegando con Webpack per servire al client (è un’app basata su ReactJS). Il problema si è verificato quando ho installato il pacchetto NIP Tabletop e require d.

Durante il tentativo di caricare bundle.js creato con bundle.js nel browser, viene visualizzato un errore di syntax:

Uncaught SyntaxError: Unexpected identifier

che si lamenta di questa riga in bundle.js :

target[capName] = __webpack_require__(387)(""path + '/' + name);

Dopo alcuni scavi, scopro che questa linea proviene da una linea nella libreria Hoek (che è una sotto-dipendenza di Tabletop):

target[capName] = require(path + '/' + name);

Chiaramente, Webpack ha fatto qualcosa di funky qui.

Non sono stato in grado di isolare la causa però. Tabletop include un esempio di utilizzo di NodeJS che sono riuscito a eseguire Webpack ed eseguire correttamente.

Ho anche clonato Hoek e Webpacke senza aver visto nessuna trasformazione illegale come quella sopra.

Così ora, non sono sicuro che si tratti di un problema Webpack, Hoek o Tabletop, ecco perché lo sto postando qui.

Non trovo problemi correlati, qui o su GH.

Tutto apprezzato!

Risulta che una dipendenza nidificata obsoleta del pacchetto hoek causato questo, a causa della linea di richiesta dynamic mostrata sopra. Questo è stato rimosso in [email protected]

Sfortunatamente, il dep di request di Tabletop ha una dipendenza obsoleta di hawk che dipende ancora da hoek . Ho bocciato la request e ho urtato la versione, ma ora sto riscontrando un errore diverso sul caricamento nel browser:

Uncaught Error: Cannot find module "net"

net è un modulo Node di base, quindi ho il sospetto che ci sia qualcosa da fare qui dato che JS lo sta eseguendo sul Webpacking serveride. Tuttavia, questo è un problema diverso, quindi considero la domanda originale qui risposta ..

Ma non riesco ancora a usare Tabletop. Potrei dover Browserify e utilizzare direttamente quel bundle.

Ho usato superagent con un certo successo quando aggiungo

plugins.push(new webpack.DefinePlugin({ "global.GENTLY": false })); e node: {__dirname: true}

alla configurazione di webpack risolve superagent per l’uso con webpack.

Quando si utilizza la libreria di request , aggiungendo quanto segue alla configurazione di webpack:

 node: { "net": "empty" } 

Correzioni Uncaught Error: Cannot find module "net" .

Tuttavia, ora sto avendo problemi con la libreria mime che è una dipendenza della request : Error: ENOENT, no such file or directory '/types/mime.types'

Aksel, hai avuto qualche request riparazione con successo con il webpack?