jasmine / jasmine-npm

A jasmine runner for node projects.
MIT License
376 stars 145 forks source link

Failed to load reporter module jasmine 4.x #189

Closed ffortier closed 2 years ago

ffortier commented 2 years ago

Hello, since the major release to jasmine 4.0.1, the following code described in the documentation fails with the this error

Error: Failed to load reporter module jasmine-ts-console-reporter
Underlying error: Error [ERR_MODULE_NOT_FOUND]: Cannot find module '$PROJECT/jasmine-ts-console-reporter' imported from '$PROJECT/node_modules/jasmine/lib/loader.js'
npm i --save-dev jasmine-ts-console-reporter
npx jasmine --reporter=jasmine-ts-console-reporter

It seems to be caused by this line

https://github.com/jasmine/jasmine-npm/blob/main/lib/command.js#L169

async function registerReporter(reporterModuleName, jasmine) {
  let Reporter;

  try {
    Reporter = await new Loader().load(resolveReporter(reporterModuleName));
  } catch (e) {
    throw new Error('Failed to load reporter module '+ reporterModuleName +
      '\nUnderlying error: ' + e.stack + '\n(end underlying error)');
  }

I believe that the code should use the jasmine.loader instead of creating a new Loader() so that we can set the jsLoader: 'require' in a config file when necessary. So something like this

async function registerReporter(reporterModuleName, jasmine) {
  let Reporter;

  try {
    Reporter = await jasmine.loader.load(resolveReporter(reporterModuleName));
  } catch (e) {
    throw new Error('Failed to load reporter module '+ reporterModuleName +
      '\nUnderlying error: ' + e.stack + '\n(end underlying error)');
  }
sgravrock commented 2 years ago

I'm hoping to get this released today. I just have a bit more testing to do first.