2016-10-11 5 views
0

Я пытаюсь использовать Rollup для связывания и treeshake моего существующего проекта. Однако, я получаю следующую ошибку.Ошибка при свертывании: Неожиданный токен: имя

Export 'Client' is not defined by 'C:\Users\George\Source\Repos\docs\client\service\search.service.js' Error transforming bundle with 'uglify' plugin: SyntaxError: Unexpected token: name (UiService)

вот мой search.service.ts:

import { Injectable } from '@angular/core'; 
import * as elasticsearch from 'elasticsearch'; 
//declare var elasticsearch: any; 

@Injectable() 
export class SearchService { 
    private Client: elasticsearch.Client; 
    constructor() { 
     var connectionString = 'https://paas:[email protected]'; 
     this.Client = new elasticsearch.Client({ 
      host: connectionString, 
      log: 'trace' 
     }); 
    } 

    search(term: string): any { 
     return this.Client.search({ 
      index: 'plugins', 
      type: 'ds044699_mlab_com_cdc1', 
      body: { 
       query: { 
        multi_match: { 
         query: term, 
         fields: ['name', 'description'] 
        } 
       } 
      } 
     }); 
    } 
} 

и вот мой ui.service.ts:

import { Injectable } from '@angular/core'; 
import { Subject } from 'rxjs/Subject'; 

@Injectable() 
export class UiService { 
    chapters: string; 
    // Observable boolean streams 
    navState$ = this.navStateSource.asObservable(); 
    chapter = this._chapter.asObservable(); 

    // Observable boolean sources 
    private navStateSource = new Subject<boolean>(); 
    private _chapter: Subject<number> = new Subject<number>(); 

    // Service message commands 
    changeNavState(showNav: boolean) { 
     this.navStateSource.next(showNav); 
    } 

    changeChapter(chapter: number) { 
     this._chapter.next(chapter); 
    } 
} 

Я не могу видеть, что это не так либо с из этих файлов? - Куда мне искать?

ответ

2

Для первой ошибки (Export 'Client' is not defined by...), вероятно, вам необходимо использовать опцию namedExports с rollup-plugin-commonjs. Мы только что выпустили новую версию Rollup, которая делает это сообщение более понятным и ссылается на страницу Troubleshooting.

Второе сообщение похоже, что это, вероятно, связано с UglifyJS, не уменьшающим код ES6. Возможно, вам понадобится настроить ES5 в вашей конфигурации TypeScript (я думаю, что я не делаю TypeScript) или добавить преобразование, например rollup-plugin-buble, или rollup-plugin-babel, чтобы преобразовать его в ES5 перед мини-классификацией.

+0

Большое спасибо за ответ. Я компилирую это в модуль стиля es2015 с помощью TypeScript, вы можете увидеть параметры компилятора [здесь] (https://github.com/georgeedwards/docs/blob/performance/client/tsconfig-aot.json) - поэтому он должен Это не обычный модуль? –