mifi/editly

Not working on typescript, ERR_REQUIRE_ESM

adelin-b opened this issue · 1 comments

Hello, currently whenever I try to import editly in typescript here is what happen

> @bennycode/ts-node-starter@0.0.0 start
> ts-node ./src/start.ts

/home/adelin/Documents/Projects/tachou/cliper/node_modules/ts-node/dist/index.js:851
            return old(m, filename);
                   ^
Error [ERR_REQUIRE_ESM]: require() of ES Module /home/adelin/Documents/Projects/tachou/cliper/node_modules/editly/index.js from /home/adelin/Documents/Projects/tachou/cliper/src/MyClass.ts not supported.
Instead change the require of index.js in /home/adelin/Documents/Projects/tachou/cliper/src/MyClass.ts to a dynamic import() which is available in all CommonJS modules.
    at Object.require.extensions.<computed> [as .js] (/home/adelin/Documents/Projects/tachou/cliper/node_modules/ts-node/dist/index.js:851:20)
    at Object.<anonymous> (/home/adelin/Documents/Projects/tachou/cliper/src/MyClass.ts:16:34)
    at Module.m._compile (/home/adelin/Documents/Projects/tachou/cliper/node_modules/ts-node/dist/index.js:857:29)
    at Object.require.extensions.<computed> [as .ts] (/home/adelin/Documents/Projects/tachou/cliper/node_modules/ts-node/dist/index.js:859:16)
    at Object.<anonymous> (/home/adelin/Documents/Projects/tachou/cliper/src/start.ts:3:19)
    at Module.m._compile (/home/adelin/Documents/Projects/tachou/cliper/node_modules/ts-node/dist/index.js:857:29)
    at Object.require.extensions.<computed> [as .ts] (/home/adelin/Documents/Projects/tachou/cliper/node_modules/ts-node/dist/index.js:859:16)
    at phase4 (/home/adelin/Documents/Projects/tachou/cliper/node_modules/ts-node/dist/bin.js:466:20)
    at bootstrap (/home/adelin/Documents/Projects/tachou/cliper/node_modules/ts-node/dist/bin.js:54:12)
    at main (/home/adelin/Documents/Projects/tachou/cliper/node_modules/ts-node/dist/bin.js:33:12)
    at Object.<anonymous> (/home/adelin/Documents/Projects/tachou/cliper/node_modules/ts-node/dist/bin.js:579:5) {
  code: 'ERR_REQUIRE_ESM'

You can use this as a workaround for now:

import type editly from 'editly';

const getEditly = async (): Promise<typeof editly> => {
  const lib = await (eval(`import('editly')`) as Promise<{
    default: typeof import('editly');
  }>);
  return lib.default;
};

Note: use of type is very important

  • Use it like this:
const editly = await getEditly();
editly(...);