#angular #ionic-framework #ionic2 #angular-compiler-cli
#angular #ionic-framework #ionic2 #angular-compiler-cli
Вопрос:
Я пытаюсь скомпилировать свое приложение ionic 2 rc с использованием ngc с помощью typescript@next:
[ben@ben app2] $ ./node_modules/.bin/ngc -p tsconfig.json
Error: Metadata emit requires the sourceFiles are passed to WriteFileCallback. Update to TypeScript ^1.9.0-dev
at MetadataWriterHost.writeFile (/home/ben/blindmate/app2/node_modules/@angular/tsc-wrapped/src/compiler_host.js:97:23)
at Object.writeFile (/home/ben/blindmate/app2/node_modules/typescript/lib/typescript.js:58205:132)
at Object.writeFile (/home/ben/blindmate/app2/node_modules/typescript/lib/typescript.js:8508:14)
at printFile (/home/ben/blindmate/app2/node_modules/typescript/lib/typescript.js:55459:16)
at emitFile (/home/ben/blindmate/app2/node_modules/typescript/lib/typescript.js:55409:21)
at onSingleFileEmit (/home/ben/blindmate/app2/node_modules/typescript/lib/typescript.js:8415:13)
at Object.forEachTransformedEmitFile (/home/ben/blindmate/app2/node_modules/typescript/lib/typescript.js:8392:21)
at Object.emitFiles (/home/ben/blindmate/app2/node_modules/typescript/lib/typescript.js:55392:12)
at emitWorker (/home/ben/blindmate/app2/node_modules/typescript/lib/typescript.js:58256:33)
at /home/ben/blindmate/app2/node_modules/typescript/lib/typescript.js:58219:66
Я не могу изменить свою версию typescript (@next), потому что мне нужна поддержка async / await. Есть ли какой-либо способ исправить эту ошибку без установки typescript@1.9.0 как следует из сообщения об ошибке?
Мой tsconfig выглядит так:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"dom",
"es2015"
],
"module": "es2015",
"moduleResolution": "node",
"target": "es5"
},
"exclude": [
"node_modules",
".tmp",
"src/app/main.prod.ts"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
}
Ответ №1:
Я изучал то же самое, и кажется, что компилятор Angular 2 AOT, по крайней мере, версия, используемая Ionic 2 RC0, на данный момент не совсем совместим с предварительными сборками TypeScript 2.1.
Если вы вернетесь к TypeScript 2.0, который является версией, используемой Ionic 2 RC0, он будет работать. Вам придется отказаться от async / await, но на самом деле вам не нужен async / await, поскольку вы можете эффективно написать тот же код, явно создавая и используя Promises . Это просто не так кратко или выразительно. 🙂 Тем не менее, я хочу, чтобы async / await, вероятно, столько же, сколько и вы, и также был бы заинтересован в том, чтобы это заработало как можно скорее.