2017-01-24 17 views
2

Я пытаюсь обновить существующее приложение anguar.js до углового 2, после https://angular.io/docs/ts/latest/guide/upgrade.html.Как решить ParseError: 'import' и 'export' могут появляться только при использовании 'sourceType: module' при импорте UpgradeAdapter?

Приложение уже написано с помощью машинописного машинописного машиностроения, и мы используем браузер и tisify для компиляции и комплектации приложения.

После установки угловых 2 зависимостей с НПМ, и пытается грузиться гибридное приложение, browserify дает мне следующую ошибку:

/my-project/node_modules/@angular/upgrade/static.js:8 
export { downgradeComponent } from './src/aot/downgrade_component'; 
^ 
ParseError: 'import' and 'export' may appear only with 'sourceType: module' 

Ошибка показывает только после добавления следующего кода:

import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; 
import {AppModule} from './app.module'; 
import {UpgradeModule} from '@angular/upgrade/static'; 

platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => { 
    const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule; 
    upgrade.bootstrap(document.documentElement, ['sagaDesktopApp']); 
}); 

Это мой tsconfig.json:

{ 
    "compilerOptions": { 
     "target": "es5", 
     "module": "commonjs", 
     "moduleResolution": "node", 
     "sourceMap": true, 
     "emitDecoratorMetadata": true, 
     "experimentalDecorators": true, 
     "removeComments": false, 
     "noImplicitAny": false, 
     "suppressImplicitAnyIndexErrors": true 
    } 
} 

Любая помощь будет очень оценена.

ответ

2

Я воспроизвел проблему. Это связанно с тем, что есть static.js файла в @angular/upgrade и когда Browserify пытается разрешить @angular/upgrade/static он решает:

node_modules/@angular/upgrade/static.js 

Однако намерение состоит в том, чтобы он постановляет:

node_modules/@angular/upgrade/static/package.json 

package.json в каталоге static содержит запись main, которая используется поставщиками, не относящимися к ES6, например Browserify.

Browserify подражает Node's module resolution mechanism и он должен проверить файл перед каталогом, так чтобы решить эту проблему, добавьте косую черту к импорту:

import { UpgradeModule } from '@angular/upgrade/static/'; 

Browserify будет проверять каталог первым и рассосется package.json в комплекте.

Если вас интересуют, есть более подробная информация о package.json файле main/module вещи в this Tsify issue.

+0

Большое спасибо! Добавление косой черты зафиксировано :-) – larslonne