loopbackio / loopback-next

LoopBack makes it easy to build modern API applications that require complex integrations.
https://loopback.io
Other
4.93k stars 1.06k forks source link

Latest loopback mocha tests are not running #9561

Open fahadsuhaib opened 1 year ago

fahadsuhaib commented 1 year ago

Describe the bug

Create a new lb app with node 16, Trying to run the default tests that come with lb app, using yarn test, it immediately throws this typescript error. This seems to be a mocha issue, but why did Loopback upgrade to latest mocha?

ERR_REQUIRE_ESM errors with Mocha tests.

const stringWidth = require('string-width');
                    ^

Error [ERR_REQUIRE_ESM]: require() of ES Module /home/fahad/work/testapp/node_modules/string-width/index.js from /home/fahad/work/testapp/node_modules/yargs/node_modules/cliui/build/index.cjs not supported.
Instead change the require of index.js in /home/fahad/work/testapp/node_modules/yargs/node_modules/cliui/build/index.cjs to a dynamic import() which is available in all CommonJS modules.
    at Object.<anonymous> (/home/fahad/work/testapp/node_modules/yargs/node_modules/cliui/build/index.cjs:291:21)
    at Object.<anonymous> (/home/fahad/work/testapp/node_modules/yargs/build/index.cjs:2861:12)
    at Object.<anonymous> (/home/fahad/work/testapp/node_modules/yargs/yargs:3:69)
    at Object.<anonymous> (/home/fahad/work/testapp/node_modules/mocha/lib/cli/cli.js:15:15)
    at Object.<anonymous> (/home/fahad/work/testapp/node_modules/mocha/bin/mocha.js:141:3) {
  code: 'ERR_REQUIRE_ESM'
}

Logs

No response

Additional information

If I downgrade yargs library to 14.2.2, this issue is not occurring.

Reproduction

THIS ISSUE IS OBVIOUS

Telokis commented 1 year ago

I was about to report this same issue in a freshly created project.

I confirm it is still reproducible as of today with the following versions:

lb4 --version ``` > lb4 --version @loopback/cli version: 5.2.1 @loopback/* dependencies: - @loopback/authentication: ^10.1.2 - @loopback/boot: ^6.1.2 - @loopback/build: ^10.1.2 - @loopback/context: ^6.1.2 - @loopback/core: ^5.1.2 - @loopback/metadata: ^6.1.2 - @loopback/openapi-spec-builder: ^6.1.2 - @loopback/openapi-v3: ^9.1.2 - @loopback/repository-json-schema: ^7.1.2 - @loopback/repository: ^6.1.2 - @loopback/rest: ^13.1.2 - @loopback/testlab: ^6.1.2 - @loopback/docs: ^6.0.3 - @loopback/example-hello-world: ^6.1.2 - @loopback/example-log-extension: ^6.1.2 - @loopback/example-rpc-server: ^6.1.2 - @loopback/example-todo: ^7.1.2 - @loopback/example-soap-calculator: ^6.1.2 - @loopback/service-proxy: ^6.1.2 - @loopback/http-caching-proxy: ^5.1.2 - @loopback/http-server: ^5.1.2 - @loopback/example-todo-list: ^7.1.2 - @loopback/dist-util: ^0.4.0 - @loopback/rest-explorer: ^6.1.2 - @loopback/eslint-config: ^14.0.3 - @loopback/example-express-composition: ^6.1.2 - @loopback/example-greeter-extension: ^6.1.2 - @loopback/booter-lb3app: ^5.1.2 - @loopback/example-lb3-application: ^6.1.2 - @loopback/example-greeting-app: ^6.1.2 - @loopback/example-context: ^6.1.2 - @loopback/repository-tests: ^0.23.2 - @loopback/health: ^0.13.2 - @loopback/authorization: ^0.14.2 - @loopback/rest-crud: ^0.17.2 - @loopback/security: ^0.10.2 - @loopback/authentication-passport: ^6.1.2 - @loopback/example-metrics-prometheus: ^0.12.2 - @loopback/metrics: ^0.13.2 - @loopback/model-api-builder: ^5.1.2 - @loopback/logging: ^0.11.2 - @loopback/example-access-control-migration: ^6.1.2 - @loopback/example-file-transfer: ^5.1.2 - @loopback/example-rest-crud: ^5.1.2 - @loopback/apiconnect: ^0.12.2 - @loopback/example-validation-app: ^5.1.2 - @loopback/cron: ^0.11.2 - @loopback/example-multi-tenancy: ^0.15.2 - @loopback/example-passport-login: ^5.1.2 - @loopback/authentication-jwt: ^0.14.2 - @loopback/context-explorer: ^0.10.2 - @loopback/express: ^6.1.2 - @loopback/example-todo-jwt: ^5.1.2 - @loopback/mock-oauth2-provider: ^0.8.2 - @loopback/pooling: ^0.10.2 - @loopback/typeorm: ^0.9.2 - @loopback/example-graphql: ^0.9.2 - @loopback/graphql: ^0.10.2 - @loopback/filter: ^4.1.2 - @loopback/rest-msgpack: ^0.10.2 - @loopback/example-binding-resolution: ^0.9.2 - @loopback/example-webpack: ^0.10.2 - @loopback/example-socketio: ^0.8.2 - @loopback/socketio: ^0.7.3 - @loopback/monorepo: ^0.6.0 - @loopback/tsdocs: ^5.1.2 - @loopback/example-references-many: ^7.1.2 - @loopback/sequelize: ^0.5.1 ```

I am using node v18.16.1.

The issue is fixed if I install yargs@14.2.2 as suggested above.