browserify require in der erforderlichen Datei kann das Modul nicht finden
Ich versuche, meine eckigen js mit browserify in ein einziges Skript zu packen. Es funktioniert gut, wenn ich @ benutrequire
aus meiner Hauptdateiapp.js
, aber wenn eines der Module in @ erforderliapp.js
enthält ein eigenesrequire
, die Abhängigkeit ist nicht in meinem Bundle enthalten.
Zur Erinnerung, inapp.js
(Link zur Zeile im Repo):
require("splash-header");
// more code here
require("social-button-directive");
// more code here
socialButtons.js hat keine Abhängigkeiten.
browserify --list app.js
listet @ nicht asplashHeader.js
wie es sollte, und das Bundle produziert überbrowserify app.js -o bundle.js
enthält kein Javascript von socialButton. Wenn ich also trotzdem versuche, die Site zu laden, erhalte ichUncaught Error: Cannot find module 'social-button-directive'
bei splashHeader'srequire('social-button-directive')
.
Auch wichtig zu beachten, dass ich Modulnamen mithilfe der Option "browser" in @ den Speicherorten der Dateien zuordnpackage.json
und mit browerify-shim, da keines meiner Module common-js-kompatibel ist.
relevanter Abschnitt von package.json:
"dependencies": {
"browserify": "~9.0.3",
"browserify-shim": "~3.8.3"
},
"browserify": {
"transform": [
"browserify-shim"
]
},
"browserify-shim": {
"splash-header": {
"depends": "angular",
"exports": "angular.module('splash-header').name"
},
"social-button-directive": {
"depends": "angular",
"exports": "angular.module('social-button-directive').name"
}
},
"browser":{
"splash-header": "./ng-modules/splashHeader/splashHeader.js",
"social-button-directive": "./ng-modules/socialButtons/socialButtons.js"
}
Ich war den ganzen Morgen dabei und bin völlig ratlos. Ich habe das beleidigende Projekt gekürzt, um als @ zu diene ein minimales Beispiel für das Problem. Zum Testen einfach klonen und npm installieren. Wenn Sie im Detail suchen, ist hier das working / not working version diff.
Ich habe versucht, das Submodul über den relativen Pfad zu laden require('./ng-modules/socialButtons/socialButtons.js
) `), kein Glück. Vielleicht habe ich die Dinge falsch eingestellt? Mein Ansatz dazu kommt vonDieser Artike.
BEARBEITE: Es ist mit Sicherheit meine Browserify-Shim-Konfiguration. Alles funktioniert, nachdem die Module in commonjs konvertiert und die browserfy-shim-Optionen aus package.json entfernt wurden. Ich musste wohl alles aufschreiben, um es festzuhalten. = /