2016-09-02 3 views
5

Я только что обновил свой проект до Angular 2 RC 6. Теперь я пытаюсь использовать компиляцию Ahead of Time (AoT), упомянутую в сообщении в блоге http://angularjs.blogspot.com/, но без успеха.Угловой 2 RC 6 AoT Компилятор не работает

Я не использую угловой кли, как я строил проект в ASP.Net.

Как следует сообщение в блоге, я установил @ угловой/компилятор-Cli

Но когда я пытаюсь запустить NGC из командной строки, он дает ошибку

'ngc' is not recognized as an internal or external command, 
operable program or batch file. 


npm run ngc 
npm ERR! Windows_NT 10.0.10586 
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "ngc" 
npm ERR! node v6.4.0 
npm ERR! npm v3.10.3 

npm ERR! missing script: ngc 
npm ERR! 
npm ERR! If you need help, you may report this error at: 
npm ERR!  <https://github.com/npm/npm/issues> 

npm ERR! Please include the following file with any support request: 
npm ERR!  D:\Project\App\npm-debug.log 

Может кто-нибудь, пожалуйста, руководство, как использовать Компилятор AoT с проектом ASP.Net. Или когда вы не используете Angular CLI, а строите компоненты и т. Д. Вручную.

Редактировать

теперь я сумел бежать на первый NGC переход к ./node_modules/.bin/ и затем запустить

ngc -p D:\Project\App 

Но теперь компилятор бросает ошибку ниже:

Когда я пытаюсь скомпилировать свой проект с помощью ngc, он выдает следующую ошибку:

Error: Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function (position 92:25 in the original .ts file), resolving symbol AppModule in 

В моем модуле приложения у меня есть нижеперечисленные провайдеры, и, вероятно, это вызывает проект. Я не уверен, что именно с этим происходит?

providers: [ 
     GlobalService, 
     { 
      provide: Http, 
      useFactory: (backend: XHRBackend, defaultOptions: RequestOptions, globalService: GlobalService) => new HttpLoading(backend, defaultOptions, globalService), 
      deps: [XHRBackend, RequestOptions, GlobalService] 
     } 
    ], 
+0

Возможный дубликат [ng не распознается как внутренняя или внешняя команда] (http://stackoverflow.com/questions/37991556/ng-is-not-recognized-as-an-internal-or-external-command) –

+0

Если вы посмотрите на ответ, это вопрос Windows, как-то ваш PATH, возможно, испортился, или вам нужно перезапустить или даже открыть CMD в качестве администратора. К сожалению, это может быть много. Дайте этим выстрел! –

+0

Благодарим вас за ответ, Можете ли вы взглянуть на редактирование, которое я сделал на вопрос? –

ответ

0

Задача 1

При запуске сценариев из package.json или "НПМ сценарии", чтобы исправить проблему с пути в Windows 10, вам необходимо обернуть каталог_каталог в двойных кавычках и избежать каждой двойной кавычки с обратной косой чертой:

"compile:aot": \"./node_modules/.bin/ngc\" -p src

Это будет выполнять программу ngc, расположенную в ./node_modules/.bin с -p src аргументами.

В противном случае у вас должно быть cd ./node_modules/.bin && ngc -p src в виде 2 различных команд.

Задача 2

В настоящее время, кажется, что АОТ сборник для угловых 2 имеет проблемы с require() заявления. Поэтому, если вы хотите устранить ошибки компиляции, вам нужно удалить все требования require() из вашего приложения.

Очевидно, что это плохая идея, поскольку существует потребность в require(), особенно при работе с Webpack или другими модульными пакетами. Нам нужно ждать решения от команды angular2.

+0

Hi @TetraDev, re. проблема 2, вы больше не являетесь источником информации для этой проблемы AOT Vs 'require()? Я не смог найти, но я нахожусь в этом, когда пытаюсь потребовать «глобальный» файл CSS и сделать сборку AOT в производстве. Спасибо – superjos

+0

@Superjos Да, вместо 'require ('my.css');' just do 'import 'my.css';' и AOT будет компилироваться в порядке. – TetraDev

+0

Спасибо за ответ. Я забыл о своем вопросе. В какой-то момент мы приняли то же обходное решение, что и вы. Позже, обновив зависимости от последних доступных в настоящее время, я обнаружил, что 'require()' работает снова. Попробуйте с зависимостями @angular 2.1.0, и если этого недостаточно, также с webpack 2.1.0-beta.25 – superjos

0

я бегала в этот вопрос с помощью

"@angular/compiler-cli": "^4.0.1" 

Для меня удаление/node_modules/@ угловую папку и работает

npm install 

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

0

Возможно, вы имеете вызовы функций в своих определениях @NgModule. Мне нужно удалить некоторые динамические провайдеры, чтобы заставить его работать для меня.

Возможно, вам стоит попробовать заменить «useFactory: (...) => {...}» или хотя бы протестировать его комментирование.

+0

Я предполагаю, что функции в определениях модулей находятся во время выполнения, поэтому AOT определенно потерпит неудачу. – AiShiguang

Смежные вопросы