Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support custom nyc.config.js file in ESM projects #668

Open
mike-plummer opened this issue Jun 21, 2023 · 2 comments
Open

Support custom nyc.config.js file in ESM projects #668

mike-plummer opened this issue Jun 21, 2023 · 2 comments

Comments

@mike-plummer
Copy link

mike-plummer commented Jun 21, 2023

Based off @cypress-io/cypress#26729

ESM projects cannot currently use a custom nyc.config.js file because this project uses require(..) to import that file - require does not support ESM modules.

Screenshot 2023-06-21 at 3 21 52 PM

This may be as simple as swapping out require(..) for an await import(..), but there may be dragons

Logs and screenshots

Error: Failed to load nyc.config.js: require() of ES Module /Users/mikep/Development/Scaffolds/firewatch/26729/nyc.config.js from /Users/mikep/Development/Scaffolds/firewatch/26729/node_modules/@cypress/code-coverage/task-utils.js not supported.
Instead change the require of nyc.config.js in /Users/mikep/Development/Scaffolds/firewatch/26729/node_modules/@cypress/code-coverage/task-utils.js to a dynamic import() which is available in all CommonJS modules.
    at readNycOptions (/Users/mikep/Development/Scaffolds/firewatch/26729/node_modules/@cypress/code-coverage/task-utils.js:61:13)
    at getNycOption (/Users/mikep/Development/Scaffolds/firewatch/26729/node_modules/@cypress/code-coverage/task.js:36:28)
    at Object. (/Users/mikep/Development/Scaffolds/firewatch/26729/node_modules/@cypress/code-coverage/task.js:58:3)
    at Module._compile (node:internal/modules/cjs/loader:1126:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
    at Module.load (node:internal/modules/cjs/loader:1004:32)
    at Function.Module._load (node:internal/modules/cjs/loader:839:12)
    at ModuleWrap. (node:internal/modules/esm/translators:170:29)
    at ModuleJob.run (node:internal/modules/esm/module_job:193:25)
    at async Promise.all (index 0)
    at async ESMLoader.import (node:internal/modules/esm/loader:533:24)
    at async importModuleDynamicallyWrapper (node:internal/vm/module:438:15)
    at async loadFile (/Users/mikep/Library/Caches/Cypress/12.15.0/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/child/run_require_async_child.js:106:14)
    at async EventEmitter. (/Users/mikep/Library/Caches/Cypress/12.15.0/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/child/run_require_async_child.js:116:32)

Link to the repo

https://github.com/mike-plummer/code-coverage-668

@Benoit-Vasseur
Copy link

Hello,

+1 for ESM support

You may use this package to load the config ? https://github.com/istanbuljs/load-nyc-config

@ydennisy
Copy link

@mike-plummer any update here? Is there a proposed workaround at the moment for using cypress code coverage with "type": "module"?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants