diff --git a/packages/ember-cli-fastboot/fastboot/initializers/error-handler.js b/packages/ember-cli-fastboot/fastboot/initializers/error-handler.js index 96177b2db..3de05b8b4 100644 --- a/packages/ember-cli-fastboot/fastboot/initializers/error-handler.js +++ b/packages/ember-cli-fastboot/fastboot/initializers/error-handler.js @@ -1,4 +1,4 @@ -import Ember from 'ember'; +import { getOnerror, setOnerror } from '@ember/-internals/error-handling'; /** * Initializer to attach an `onError` hook to your app running in fastboot. It catches any run loop @@ -9,12 +9,12 @@ export default { name: 'error-handler', initialize: function () { - if (!Ember.onerror) { + if (!getOnerror()) { // if no onerror handler is defined, define one for fastboot environments - Ember.onerror = function (err) { + setOnerror(function (err) { const errorMessage = `There was an error running your app in fastboot. More info about the error: \n ${err.stack || err}`; console.error(errorMessage); - }; + }); } }, }; diff --git a/test-packages/test-scenarios/oneerror-per-visit-test.mjs b/test-packages/test-scenarios/oneerror-per-visit-test.mjs index a5e469dfa..06b5fdd4a 100644 --- a/test-packages/test-scenarios/oneerror-per-visit-test.mjs +++ b/test-packages/test-scenarios/oneerror-per-visit-test.mjs @@ -24,7 +24,7 @@ appScenarios }); });`, 'instance-initializers': { - 'setup-onerror.js': `import Ember from 'ember'; + 'setup-onerror.js': `import { setOnerror } from '@ember/-internals/error-handling'; export function initialize(owner) { let isFastBoot = typeof 'FastBoot' !== 'undefined'; let fastbootRequestPath; @@ -36,12 +36,12 @@ appScenarios console.log('setting up error handler ' + fastbootRequestPath); - Ember.onerror = function (error) { + setOnerror(function (error) { if (isFastBoot) { error.fastbootRequestPath = fastbootRequestPath; throw error; } - }; + }); } export default { @@ -52,12 +52,15 @@ appScenarios routes: { 'application.js': `import Route from '@ember/routing/route'; import { action } from '@ember/object'; - import Ember from 'ember'; + import { getOnerror } from '@ember/-internals/error-handling'; export default class ApplicationRoute extends Route { @action error(err) { - Ember.onerror(err); + const onerror = getOnerror(); + if (onerror) { + onerror(err); + } } } `,