CodeceptJS icon indicating copy to clipboard operation
CodeceptJS copied to clipboard

Migrate CodeceptJS to ESM (Top-level await)

Open danielhelen opened this issue 1 year ago • 7 comments

What are you trying to achieve?

I need to use top-level await to retrieve config from AWS and other APIs but CodeceptJS seems completely incompatible with ES modules. Top-level await is simply not possible in CommonJS. Are there any plans to support ES modules?

What do you get instead?

If you set "type": "module" in package.json you get this error:

Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/REDACTED/config/codecept.conf.js from /Users/REDACTED/node_modules/codeceptjs/lib/config.js not supported.
Instead change the require of codecept.conf.js in /Users/REDACTED/node_modules/codeceptjs/lib/config.js to a dynamic import() which is available in all CommonJS modules.
    at loadConfigFile (/Users/REDACTED/node_modules/codeceptjs/lib/config.js:160:26)
    at Config.load (/Users/REDACTED/node_modules/codeceptjs/lib/config.js:91:14)
    at module.exports.getConfig (/Users/REDACTED/node_modules/codeceptjs/lib/command/utils.js:14:33)
    at module.exports (/Users/REDACTED/node_modules/codeceptjs/lib/command/run.js:18:16)
    at Command.<anonymous> (/Users/REDACTED/node_modules/codeceptjs/bin/codecept.js:9:11)

Details

  • CodeceptJS version: 3.5.13-beta.3
  • NodeJS Version: v20.10.0
  • Operating System: MacOS Ventura

danielhelen avatar Feb 09 '24 11:02 danielhelen

@danielhelen at this moment this means to rewrite CodeceptJS completely and I don't think we have enough resources to handle this task.

DavertMik avatar Feb 17 '24 17:02 DavertMik

Actually we can try this codemod, which can make migration faster

https://github.com/azu/commonjs-to-es-module-codemod

DavertMik avatar Feb 17 '24 20:02 DavertMik

#4229 We are working on it!

DavertMik avatar Apr 12 '24 22:04 DavertMik

This issue is stale because it has been open for 90 days with no activity.

github-actions[bot] avatar Jul 12 '24 02:07 github-actions[bot]