无法通过AOT运行{N}应用程序,Reflect.getMetadata不是一个函数

时间:2019-04-05 14:49:29

标签: webpack nativescript angular2-nativescript

尝试使我的本机脚本应用程序在启用aot的情况下运行。 使用最新版本的nativescript,它的构建就很好。启动应用程序时,错误CREATE TABLE dataHistory ( rowID int identity, historizationDate datetime default getDate(), dataID int, column1 int, column2 datetime, ...) 出现,并且该应用程序无法运行。 使用依赖于Reflect.getMetadata的依赖项时,例如:https://github.com/ghidoz/angular2-jsonapi

,会发生这种情况

演示项目,使用aot时出错: https://github.com/annervisser/nativescript-aot-error

应用程序使用JIT可以完美运行,并且仅在使用Reflect.getMetadata is not a function标志时才会中断。 Webpack始终处于启用状态,因为这是一个有角度的项目(始终与--env.aot标志一起运行)

完整的堆栈跟踪:

--bundle

我尝试在不同的地方导入反射元数据,包括System.err: TypeError: Reflect.getMetadata is not a function System.err: File: "<unknown>, line: 1, column: 265 System.err: System.err: StackTrace: System.err: Frame: function:'saveAnnotations', file:'file:///data/data/nl.persistence.stubs/files/app/vendor.js', line: 78279, column: 36 System.err: Frame: function:'', file:'file:///data/data/nl.persistence.stubs/files/app/vendor.js', line: 78322, column: 13 System.err: Frame: function:'module.exports../app/shared/models/user.model.ts.__decorate', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 2287, column: 110 System.err: Frame: function:'', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 2302, column: 5 System.err: Frame: function:'./app/shared/models/user.model.ts', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 2348, column: 2 System.err: Frame: function:'__webpack_require__', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 752, column: 30 System.err: Frame: function:'fn', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 122, column: 20 System.err: Frame: function:'./app/shared/auth/auth.service.ts', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 1355, column: 76 System.err: Frame: function:'__webpack_require__', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 752, column: 30 System.err: Frame: function:'fn', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 122, column: 20 System.err: Frame: function:'./app/shared/auth/auth-interceptor.service.ts', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 1280, column: 71 System.err: Frame: function:'__webpack_require__', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 752, column: 30 System.err: Frame: function:'fn', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 122, column: 20 System.err: Frame: function:'./app/app.module.ngfactory.js', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 1041, column: 96 System.err: Frame: function:'__webpack_require__', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 752, column: 30 System.err: Frame: function:'fn', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 122, column: 20 System.err: Frame: function:'', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 2387, column: 83 System.err: Frame: function:'./main.ts', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 2465, column: 30 System.err: Frame: function:'__webpack_require__', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 752, column: 30 System.err: Frame: function:'checkDeferredModules', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 45, column: 23 System.err: Frame: function:'', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 828, column: 18 System.err: Frame: function:'', file:'file:///data/data/nl.persistence.stubs/files/app/bundle.js', line: 831, column: 10 System.err: Frame: function:'require', file:'', line: 1, column: 266 System.err: Frame: function:'', file:'file:///data/data/nl.persistence.stubs/files/app/starter.js', line: 2, column: 1 System.err: Frame: function:'require', file:'', line: 1, column: 266 System.err: System.err: at com.tns.Runtime.runModule(Native Method) System.err: at com.tns.Runtime.runModule(Runtime.java:624) System.err: at com.tns.Runtime.run(Runtime.java:616) System.err: at com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21) System.err: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) System.err: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) polyfills.tsmain.tns.ts 我还尝试将其包含在webpack / tnsconfig中,并将目标更改为es2015或es6。 这些都没有任何区别。

搜索该错误会导致产生许多有关角度的常规信息,建议将app.module.tns.ts的导入内容添加到reflect-metadata中。这没有帮助。

1 个答案:

答案 0 :(得分:0)

reflect-metadata包的import语句添加到您的应用模块顶部(基本上在访问JsonApiDatastoreConfig装饰器之前。

import "reflect-metadata";