ionic-cli icon indicating copy to clipboard operation
ionic-cli copied to clipboard

Use dynamic import in hooks for type module projects

Open frederikbosch opened this issue 1 year ago • 0 comments

When using ionic + vue, the hooks serve:before scripts defined in ionic.config.json cannot run.

ionic.config.json

  "hooks": {
    "serve:before": ["./scripts/serve-before.js"]
  }

serve-before.js:

export default async function (ctx) {
}

This setup generates the following error:

[ERROR] An error occurred while running an Ionic CLI hook defined in ./ionic.config.json.
        
        Hook: serve:before
        File: /srv/libraries/app-ionic/scripts/install-custom.js
        
        Error [ERR_REQUIRE_ESM]: require() of ES Module /srv/libraries/app-ionic/scripts/serve-before.js from
        /srv/libraries/app-ionic/node_modules/@ionic/cli/lib/hooks.js not supported.
        Instead change the require of install-custom.js in
        /srv/libraries/app-ionic/node_modules/@ionic/cli/lib/hooks.js to a dynamic import() which is available in
        all CommonJS modules.
        at ServeBeforeHook.loadHookFn (/srv/libraries/app-ionic/node_modules/@ionic/cli/lib/hooks.js:73:24)

Switching back to require and module.exports style nodejs is not possible, because of the project type in the package.json.

"type": "module",

frederikbosch avatar Mar 19 '24 08:03 frederikbosch