Doesn't work with Ember Fastboot
lougreenwood opened this issue · comments
Lou Greenwood commented
When trying to serve an Ember Fastboot app which also uses Corber, the following error is thrown:
ReferenceError: navigator is not defined
at Module.callback (/Users/Lou/Sites/prog/dist/assets/addon-tree-output/ember-cordova-platform/services/ember-cordova/platform.js:31:1)
at Module.exports (/Users/Lou/Sites/prog/dist/assets/vendor/loader/loader.js:106:1)
at Module._reify (/Users/Lou/Sites/prog/dist/assets/vendor/loader/loader.js:143:1)
at Module.reify (/Users/Lou/Sites/prog/dist/assets/vendor/loader/loader.js:130:1)
at Module.exports (/Users/Lou/Sites/prog/dist/assets/vendor/loader/loader.js:104:1)
at requireModule (/Users/Lou/Sites/prog/dist/assets/vendor/loader/loader.js:27:1)
at Class._extractDefaultExport (/Users/Lou/Sites/prog/dist/assets/addon-tree-output/ember-resolver/resolvers/classic/index.js:410:1)
at Class.resolveOther (/Users/Lou/Sites/prog/dist/assets/addon-tree-output/ember-resolver/resolvers/classic/index.js:110:1)
at Class.superWrapper (/Users/Lou/Sites/prog/dist/assets/ember-utils.js:428:1)
at Class.resolve (/Users/Lou/Sites/prog/dist/assets/ember-application/system/resolver.js:133:1)
at _resolve (/Users/Lou/Sites/prog/dist/assets/container.js:878:1)
at Registry.resolve (/Users/Lou/Sites/prog/dist/assets/container.js:581:1)
at Registry.resolve (/Users/Lou/Sites/prog/dist/assets/container.js:585:1)
at _has (/Users/Lou/Sites/prog/dist/assets/container.js:895:1)
at Registry.has (/Users/Lou/Sites/prog/dist/assets/container.js:631:1)
at Registry.validateInjections (/Users/Lou/Sites/prog/dist/assets/container.js:821:1)
at FactoryManager.create (/Users/Lou/Sites/prog/dist/assets/container.js:399:1)
at instantiateFactory (/Users/Lou/Sites/prog/dist/assets/container.js:268:1)
at _lookup (/Users/Lou/Sites/prog/dist/assets/container.js:226:1)
at Container.lookup (/Users/Lou/Sites/prog/dist/assets/container.js:78:1)
at Class.lookup (/Users/Lou/Sites/prog/dist/assets/ember-runtime/mixins/container_proxy.js:23:1)
at Class.<anonymous> (/Users/Lou/Sites/prog/dist/assets/ember-routing/system/route.js:115:1)
at ComputedPropertyPrototype.get (/Users/Lou/Sites/prog/dist/assets/ember-metal.js:4067:1)
at get (/Users/Lou/Sites/prog/dist/assets/ember-metal.js:3439:1)
at Class._getQPMeta (/Users/Lou/Sites/prog/dist/assets/ember-routing/system/router.js:601:1)
at Class._queryParamsFor (/Users/Lou/Sites/prog/dist/assets/ember-routing/system/router.js:617:1)
at forEachQueryParam (/Users/Lou/Sites/prog/dist/assets/ember-routing/system/router.js:1159:1)
at Class._deserializeQueryParams (/Users/Lou/Sites/prog/dist/assets/ember-routing/system/router.js:517:1)
at getFullQueryParams (/Users/Lou/Sites/prog/dist/assets/ember-routing/system/route.js:1274:1)
at getQueryParamsFor (/Users/Lou/Sites/prog/dist/assets/ember-routing/system/route.js:1286:1)
at Class.paramsFor (/Users/Lou/Sites/prog/dist/assets/ember-routing/system/route.js:284:1)
at Class.deserialize (/Users/Lou/Sites/prog/dist/assets/ember-routing/system/route.js:945:1)
at applyHook (/Users/Lou/Sites/prog/dist/assets/router.js:211:1)
at UnresolvedHandlerInfoByParam.runSharedModelHook (/Users/Lou/Sites/prog/dist/assets/router.js:662:1)
at UnresolvedHandlerInfoByParam.getModel (/Users/Lou/Sites/prog/dist/assets/router.js:896:1)
at tryCatcher (/Users/Lou/Sites/prog/dist/assets/rsvp.js:200:1)
at invokeCallback (/Users/Lou/Sites/prog/dist/assets/rsvp.js:372:1)
at publish (/Users/Lou/Sites/prog/dist/assets/rsvp.js:358:1)
at /Users/Lou/Sites/prog/dist/assets/ember-testing/ext/rsvp.js:14:1
at invokeWithOnError (/Users/Lou/Sites/prog/dist/assets/backburner.js:214:1)
at Queue.flush (/Users/Lou/Sites/prog/dist/assets/backburner.js:125:1)
at DeferredActionQueues.flush (/Users/Lou/Sites/prog/dist/assets/backburner.js:278:1)
at Backburner.end (/Users/Lou/Sites/prog/dist/assets/backburner.js:410:1)
at Timeout.Backburner._boundAutorunEnd [as _onTimeout] (/Users/Lou/Sites/prog/dist/assets/backburner.js:372:1)
at ontimeout (timers.js:466:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:267:5)
It seems that this issue relates to the use of navigator
when serving the app using node: ember-fastboot/ember-cli-fastboot#104
It looks like the simple fix is to guard against accessing navigator if FastBoot is in use, however, looking at the service, it seems all of the code assumes access to navigator
to determine the user agent...