2016-07-27 22 views
4

Wenn ich versuche, ng bauen mit der --prod Option laufen sie in eine Haupt kompiliert. js-Datei und ich bekomme keine Fehler in der Konsole.So verwenden „ng bauen --prod“ und „ng dienen --prod“ mit kantigem 2 CLI, immer 404 Fehler

Aber wenn ich die Anwendung im Browser ausführen, sucht es immer noch nach einzelnen js-Dateien.

mein main.ts:

// default 
import { provide, enableProdMode, ExceptionHandler } from '@angular/core'; 
import { LocationStrategy, HashLocationStrategy } from '@angular/common'; 
import { bootstrap } from '@angular/platform-browser-dynamic'; 
import { HTTP_PROVIDERS, Http } from '@angular/http'; 

// External 
import { 
    TranslateService, TranslateLoader, TranslateStaticLoader 
} from 'ng2-translate/ng2-translate'; 
import {Angulartics2} from 'angulartics2'; 

// mine 
import { CustomExceptionHandler } from './app/_common/CustomExceptionHandler'; 
import { UserService } from './app/_services/user.service'; 
import { MessagesService } from './app/_services/messages.service'; 
import { APP_ROUTER_PROVIDERS } from './app/app.routes'; 
import { App, environment } from './app/'; 

if (environment.production) { 
    enableProdMode(); 
} 

bootstrap(App, [ 
    APP_ROUTER_PROVIDERS, 
    HTTP_PROVIDERS, 
    provide(ExceptionHandler, { useClass: CustomExceptionHandler }), 
    provide(LocationStrategy, { useClass: HashLocationStrategy }), 
    { 
    provide: TranslateLoader, 
    useFactory: (http: Http) => new TranslateStaticLoader(http, '/assets/i18n', '.json'), 
    deps: [Http] 
    }, 
    Angulartics2, 
    TranslateService, 
    MessagesService, 
    UserService 
]) 
.then(() => { 
    console.log('Angular 2 loaded'); 
}) 
.catch(err => console.error(err)); 

Wenn die Anwendung im Browser läuft es für

app/_services/messages.service.js 
app/_services/user.service.js 
app/app.routes.js 
etc... 

Alle diese Anfragen 404 natürlich erhalten, da die js Dateien sind alle auf eine komprimierte aussieht main.js-Datei. Wie vermeide ich das?

+0

Können Sie richtig main.js überprüfen serviert wird? –

+0

@ArpitAgarwal Ich glaube es ist – ganjan

Antwort

8

Wenn Sie ein Produkt erstellen, wird der Pfad zum Stamm des Systems, auf dem Sie es anzeigen, und nicht zum Stamm der App.

Erstellen Sie es, indem Sie den korrekten Pfad vom Stammordner des Systems an den Speicherort des erstellten Projekts übergeben.

Beispiel:

ng build -prod --base-href /tony/myproject/