2017-04-05 4 views
1

Ich verwende module-alias für meine Node.js + Express.js-Projekt, es mit Babel für ES2015-Unterstützung läuft.Node.js Babel bauen und npm Modul-Alias ​​

App funktioniert perfekt, wenn sie mit babel-node jedoch gestartet, wenn ich es zuerst mit babel bauen (von package.json):

"build": "babel ./app --out-dir ./app_dist" 

Und dann starten:

"start": "node ./app_dist/bin/www" 

Es kann natürlich nicht das richtige finden Pfad mit Modul-Alias ​​angegeben. Statt in app_dist zu suchen, sucht Node.js für den Import in app findet ES2015 import Richtlinie, die sie nicht verstehen und wirft:

SyntaxError: Unexpected token import

Wenn ich Aliase dieser Build vor dem Start zu ändern, app-app_dist, es funktioniert, aber die Frage ist, wie diese Aliase zugeordnet werden sollen (oder wie man eine andere _moduleAliases Konfiguration verwendet), damit die App die Pfade bei Entwicklung und Produktion korrekt auflöst?

Vielleicht gibt es eine andere Möglichkeit, Module mit solchen Stapeln Alias ​​zu machen? Danke im Voraus.

Antwort

1

Gefundene Lösung für dieses Problem.

Um die relativen Pfadnamen mit module-alias zu setzen, sollten sie nicht in package.json definiert werden, sondern in der JavaScript-Datei innerhalb des Stammverzeichnisses, das mit Babel transpiliert wird.

In meinem Fall einen aliases.js Skript in config Verzeichnis wie folgt zu erstellen:

import path from 'path'; 
import moduleAlias from 'module-alias'; 

moduleAlias.addAlias('@root', path.resolve(__dirname, '../../')); 

in Weg führen wird relativ zum aktuellen Arbeitsverzeichnis zu lösen, beschriebenes Problem zu lösen.

Verwandte Themen