2017-01-26 3 views
0

Ich benutze eine Swagger-generierte API in einem Stapel, der Webpack mit Babel-Loader verwendet. webpack versucht, die Dateien als AMD-Module zu laden und schlägt fehl.Deaktivieren AMD Modul Laden

ERROR in D:/project/src/javascripts/api/location/model/Location.js 
Module not found: Error: Cannot resolve module 'ApiClient' in D:\project\src\javascripts\api\location\model 
@ D:/project/src/javascripts/api/location/model/Location.js 22:4-34 

Wenn ich entfernen Sie die AMD-Teil in den Prahlerei Dateien (unten) funktioniert es:

if (typeof define === 'function' && define.amd) { 
// AMD. Register as an anonymous module. 
define(['superagent'], factory); 
} 

Ich weiß, dass webpack loader "Importe" unterstützt einen Parameter define-> false solche Probleme zu lösen . Aber ich konnte keine Lösung für bable-loader finden. Kann jemand eine Lösung vorschlagen?

+0

Würde die folgende Hilfe? https://github.com/swagger-api/swagger-codegen/issues/3336#issuecomment-232126946 –

+0

funktioniert nicht für mich :( Fehler in mehreren globalen Modul nicht gefunden: Fehler: Modul 'Babel, importiert 'in D: \ ... \ src \ javascripts @ multi global – Michael

Antwort

1

In meinem Fall fügte ich meiner webpack-Konfiguration eine weitere Regel hinzu. Ich importiere meinen von swagger generierten Client als separates Paket, also wollte ich nur, dass der Import-Loader durch node_modules läuft.

Beachten Sie, dass der folgende Code die Syntax von Webpack 2 verwendet. Sie müssen es optimieren, wenn Sie eine ältere Version von Webpack verwenden.

module: { 
    rules: [ 
    { 
     test: /\.js$/, 
     use: 'babel-loader', 
     exclude: /node_modules/, 
    }, 
    { 
     test: /\.js$/, 
     use: 'imports-loader?define=>false', 
     include: /node_modules/, 
    }, 
    ], 
} 

Ich bin nicht sicher, was Ihre Situation ist, aber Sie könnten etwas Ähnliches tun müssen. Der von swagger generierte Code muss möglicherweise nicht durch babel laufen.