Große kryptische Fehler und Warnungen beim Versuch, Mungo mit Webpack zu verwenden

8

Ich verwende Webpack, um meine es6 isomorphe react Anwendung in Client- bzw. Server-Bundles zu kompilieren. Ich habe Mungo installiert und versuche, es im Server-Teil meiner App zu verwenden, aber ich bekomme einige schreckliche Fehler in der Konsole, wenn ich baue:

  

WARNUNG in ./~/mongoose/lib/drivers/index.js Kritische Abhängigkeiten:   8: 11-74 die Anfrage einer Abhängigkeit ist ein Ausdruck @   ./~/mongoose/lib/drivers/index.js 8: 11-74

     

WARNUNG in ./~/mongoose/lib/drivers/SPEC.md Modul-Parser fehlgeschlagen:   /Users/richie/Code/CreativeFlumeProjects/cf-website/node_modules/mongoose/lib/drivers/SPEC.md   Zeile 2: Unerwartetes Token ILLEGAL Möglicherweise benötigen Sie einen entsprechenden Loader   Behandle diesen Dateityp. | | # Treiberspezifikation | | MACHEN @   ./~/mongoose/lib/drivers ^. /. * $

     

WARNUNG in ./~/express/lib/view.js Kritische Abhängigkeiten: 78: 29-56 der   Anfrage einer Abhängigkeit ist ein Ausdruck @ ./~/express/lib/view.js   78: 29-56

     

WARNUNG in ./~/es6-promise/dist/es6-promise.js Modul nicht gefunden:   Fehler: Das Modul 'vertex' kann nicht in aufgelöst werden   / Benutzer / richie / Code / CreativeFlumeProjects / cf-website / node_modules / es6-promise / dist   lösche Modul vertex in   / Benutzer / richie / Code / CreativeFlumeProjects / cf-website / node_modules / es6-promise / dist   Suche nach Modulen in   / Benutzer / richie / Code / CreativeFlumeProjects / cf-website / src       / Benutzer / richie / Code / CreativeFlumeProjects / cf-website / src / vertex existiert nicht (Modul als Verzeichnis)       lösche 'Datei' vertex in / Users / richie / Code / CreativeFlumeProjects / cf-website / src         Datei auflösen           / Benutzer / richie / Code / CreativeFlumeProjects / cf-website / src / vertex existiert nicht           /Users/richie/Code/CreativeFlumeProjects/cf-website/src/vertx.js   existiert nicht nach Modulen in suchen   / Benutzer / richie / Code / CreativeFlumeProjects / cf-website / node_modules       / Benutzer / richie / Code / CreativeFlumeProjects / cf-website / node_modules / vertex   existiert nicht (Modul als Verzeichnis)       lösche 'Datei' vertex in / Benutzer / richie / Code / CreativeFlumeProjects / cf-website / node_modules         Datei auflösen           / Benutzer / richie / Code / CreativeFlumeProjects / cf-website / node_modules / vertex   existiert nicht           /Users/richie/Code/CreativeFlumeProjects/cf-website/node_modules/vertx.js   existiert nicht   [/ Users / richie / Code / CreativeFlumeProjekte / cf-website / src / vertex]   [/ Users / richie / Code / CreativeFlumeProjekte / cf-website / src / vertex]   [/Users/richie/Code/CreativeFlumeProjects/cf-website/src/vertx.js]   [/ Benutzer / richie / Code / CreativeFlumeProjects / cf-website / node_modules / vertex]   [/ Benutzer / richie / Code / CreativeFlumeProjects / cf-website / node_modules / vertex]   [/Users/richie/Code/CreativeFlumeProjects/cf-website/node_modules/vertx.js]   @ ./~/es6-promise/dist/es6-promise.js 132: 20-30

     

WARNUNG in ./~/bson/lib/bson/index.js Kritische Abhängigkeiten: 20: 16-29   die Anfrage einer Abhängigkeit ist ein Ausdruck 44: 18-31 die Anfrage von a   Abhängigkeit ist ein Ausdruck 71: 19-32 die Anforderung einer Abhängigkeit ist ein   Ausdruck @ ./~/bson/lib/bson/index.js 20: 16-29 44: 18-31 71: 19-32

     

WARNUNG in ./~/require_optional/index.js Kritische Abhängigkeiten:   63: 18-42 die Anfrage einer Abhängigkeit ist ein Ausdruck 71: 20-44 der   Anfrage einer Abhängigkeit ist ein Ausdruck 78: 35-67 die Anfrage von a   Abhängigkeit ist ein Ausdruck @ ./~/require_optional/index.js 63: 18-42   71: 20-44 78: 35-67

     

WARNING in ./~/require_optional/README.md Fehler beim Parsen des Moduls:   /Users/richie/Code/CreativeFlumeProjects/cf-website/node_modules/require_optional/README.md   Zeile 1: Unerwartetes Token ILLEGAL Sie benötigen möglicherweise einen geeigneten Loader für   Behandle diesen Dateityp. | # require_optional | Arbeite um das Problem herum   dass wir kein optionales PeerDependencies-Konzept in node.js haben   macht es zu einem Aufwand, optional native Module zu integrieren | @   ./~/require_optional ^. /. * $

     

WARNUNG in ./~/require_optional/LICENSE Modulparse fehlgeschlagen:   / Benutzer / richie / Code / CreativeFlumeProjects / cf-website / node_modules / require_optional / LIZENZ   Zeile 1: Unerwartete Kennung Möglicherweise benötigen Sie einen geeigneten Loader für   Behandle diesen Dateityp. | Apache   Lizenz | Version 2.0, Januar 2004

Ссылка @ ./~/require_optional ^. /. * $   /Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:235900         Rückkehrkarte [req] || (function () {neuen Fehler werfen ("Kann Modul nicht finden   '"+ req +"'. ")} ());                                          ^

     

Fehler: Kann das Modul './node-mongodb-native' nicht finden.       at /Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:235900:42       bei webpackContextResolve (/Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:235900:90)       bei webpackContext (/Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:235897:30)       bei Objekt.(/Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:48684:37)       bei webpack_require (/Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:20:30)       bei Objekt. (/Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:52685:17)       bei webpack_require (/Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:20:30)       bei Objekt. (/Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:236259:15)       bei webpack_require (/Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:20:30)       an Object.exports.contain.exxports.reachTemplate.internals.Any.applyFunctionToChildren.internals.Err.toString.internals.getPath.internals.serializer.internals.annotate.internals.Response._prepare.internals.Response._processPrepare.internals.Auth .test.internals.Auth.payload.internals.Auth.response.internals.Authenticator.exports.wrap.internals.isIsoDate.internals.compare.internals.Date.min.internals.Date.max.internals.Connection._init.internals .Connection._start.internals.Connection._stop.internals.Connection._dispatch.internals.Methods._add.internals.state.internals.payload.internals.compare.internals.Number.min.internals.Number.max.internals.Number .greater.internals.Number.less.internals.Number.multiple.internals.Number.integer.internals.Number.negative.internals.Number.positive.internals.Object.length.internals.Object.min.internals.Object.max .internals.Object.assert.internals.compare.internals.String.min.internals.String.max.internals.String.creditCard.internals.String.length.internal s.String.regex.internals.String.alphanum.internals.String.token.internals.String.email.internals.String.ip.internals.String.uri.internals.String.isoDate.internals.String.guid.internals. String.hex.internals.String.hostname.internals.String.lowercase.internals.String.uppercase.internals.Request.internals.Response.writeHead.internals.Topo.add.exports.execute.internals.prerequisites.internals.handler. internals.fromString.internals.pre.module.exports.internals.Plugin.internals.Plugin.register.internals.Protect.run.internals.Request.internals.Request._execute.internals.Request._lifecycle.internals.Request._invoke. internals.Server.start.internals.Server.initialize.internals.Server._start.internals.Server.stop._invoke.exports.send.internals.marshal.internals.fail.internals.transit.internals.state.internals.input. exports.response.internals.Router.normalize.internals.parseParams.internals.Router.table.internals.Policy.get.internals.Policy._callGenerateFunc.internals.Policy.set.exports.generateK ey.exports.encrypt.exports.decrypt.exports.hmacWithPassword.exports.seal.exports.unseal.internals.Array.items.internals.Array.ordered.internals.Array.min.internals.Array.max.internals.Array. length.internals.Binary.min.internals.Binary.max.internals.checkIpV6.exports.validate.internals.validate.internals.Definitions.parse.Items.serial.internals.unsign.Items.serial.internals.unign.internals. decode.internals.Definitions.format.Items.serial.exports.prepareValue.internals.encode.internals.sign.internals.Parser.internals.Parser.parse.decoder.once.writeFile.internals.Parser.raw.decoder.once. internals.Parser.multipart.onPart.writeFile.exports.Dispenser.internals.Dispenser.internals.Client.request.internals.Client.read.internals.Client.parseCacheControl.internals.Client._shortcut.map ../ connection   (/Users/richie/Code/CreativeFlumeProjects/cf-website/public/server.bundle.js:235702:19)

Ich habe eine Reihe von Lösungen ausprobiert, die über Google gefunden wurden. Hinzufügen von ".node" zu meinen resolve.extensions, Hinzufügen von Node-Loader sowie einige zusätzliche Konfigurationen zum Node-Objekt, alles ohne Erfolg.

    
ThinkingInBits 19.03.2016, 22:08
quelle

1 Antwort

18

Ihre Webpack-Konfiguration, die den Servercode verarbeitet, sollte einige Extras enthalten, um Probleme zu vermeiden.

Fügen Sie Folgendes hinzu:

%Vor%

Wenn Sie target auf node einstellen, wird dem webpack bewusst, dass Sie in einem Knotenkontext und nicht in einem Browser arbeiten. Durch das Hinzufügen von libraryTarget: 'commonjs' wird das Webpack dazu gebracht, einfache require Aufrufe zu verwenden, um Funktionen von externen Bibliotheken zu erhalten.

Dann passiert eine wichtige Sache in der Regex in externals . Es schließt grundsätzlich aus, dass ein nicht-relativer Pfad vom Bundle benötigt wird. Wenn du import 'react'; machst, wird es nicht von webpack gepackt, aber wenn du import './components/MyComponent.js'; machst, wird es.

Das bedeutet auch, dass Sie sicherstellen müssen, dass Ihr node_modules -Verzeichnis in Ihrem eingebauten Server-Code enthalten ist.

Warum all das? Weil Node viele native Module verwendet, die nicht richtig gebündelt werden können. Sie sind spezifisch für Ihre genaue Version von Node in Ihrem spezifischen Betriebssystem und Sie können diese nicht einfach in ein Javascript-Bundle ziehen. Sie möchten, dass Ihr eigener Code durch das Webpack geht und alle Sachen von node_modules , auf die Sie gerade zugreifen können, wie jedes Knotenprojekt.

Wenn Sie nun diese Warnungen / Fehler in Ihrem Browserpaket erhalten, bedeutet das, dass Sie wahrscheinlich Module benötigen / importieren, die nur auf dem Server in Ihrem Browserpaket funktionieren. Stellen Sie sicher, dass Sie sie nur in Dateien benötigen, die nur auf dem Server verwendet werden. Alternativ dazu, sie selektiv zu verlangen. Wie Sie basierend auf dem Build-Typ selektive Anforderungen treffen können, finden Sie hier: Kann ich feststellen, ob mein Skript von Webpack verarbeitet wird?

    
Ambroos 21.03.2016 13:40
quelle

Tags und Links