webpro-nl / knip

✂️ Find unused files, dependencies and exports in your JavaScript and TypeScript projects. Knip it before you ship it!
https://knip.dev
ISC License
6.47k stars 149 forks source link

knip fails when parsing a `.mjs` file extension #66

Closed mcmxcdev closed 1 year ago

mcmxcdev commented 1 year ago

I have been installing knip recently to a monorepo and everything was fine. A few days ago we installed stryker-mutator and therefore have a stryker.conf.mjs config file in use.

knip instantly trips up and errors out:

$ npx knip                                 
Resolving plugin configuration files...
file:///home/user/Webdevelopment/Freelancing/org/repo/node_modules/.pnpm/knip@1.12.3/node_modules/knip/dist/util/loader.js:21
        throw new LoaderError(`Error loading ${filePath}`, { cause: error });
              ^

LoaderError: Error loading /home/user/Webdevelopment/Freelancing/org/repo/stryker.conf.mjs
    at load (file:///home/user/Webdevelopment/Freelancing/org/repo/node_modules/.pnpm/knip@1.12.3/node_modules/knip/dist/util/loader.js:21:15)
    at async Module.findStrykerDependencies (file:///home/user/Webdevelopment/Freelancing/org/repo/node_modules/.pnpm/knip@1.12.3/node_modules/knip/dist/plugins/stryker/index.js:9:20)
    at async WorkspaceWorker.findDependenciesByPlugins (file:///home/user/Webdevelopment/Freelancing/org/repo/node_modules/.pnpm/knip@1.12.3/node_modules/knip/dist/workspace-worker.js:213:41)
    at async main (file:///home/user/Webdevelopment/Freelancing/org/repo/node_modules/.pnpm/knip@1.12.3/node_modules/knip/dist/index.js:187:17)
    at async run (file:///home/user/Webdevelopment/Freelancing/org/repo/node_modules/.pnpm/knip@1.12.3/node_modules/knip/dist/cli.js:27:46)
    at async file:///home/user/Webdevelopment/Freelancing/org/repo/node_modules/.pnpm/knip@1.12.3/node_modules/knip/dist/cli.js:59:1 {
  [cause]: /home/user/Webdevelopment/Freelancing/org/repo/stryker.conf.mjs:48
  export {
  ^^^^^^

  SyntaxError: Unexpected token 'export'
      at internalCompileFunction (node:internal/vm:73:18)
      at wrapSafe (node:internal/modules/cjs/loader:1176:20)
      at Module._compile (node:internal/modules/cjs/loader:1218:27)
      at Module._compile (/home/user/Webdevelopment/Freelancing/org/repo/node_modules/.pnpm/esbuild-register@3.4.2_esbuild@0.17.5/node_modules/esbuild-register/dist/node.js:2258:26)
      at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
      at Object.newLoader [as .mjs] (/home/user/Webdevelopment/Freelancing/org/repo/node_modules/.pnpm/esbuild-register@3.4.2_esbuild@0.17.5/node_modules/esbuild-register/dist/node.js:2262:9)
      at Module.load (node:internal/modules/cjs/loader:1117:32)
      at Module._load (node:internal/modules/cjs/loader:958:12)
      at Module.require (node:internal/modules/cjs/loader:1141:19)
      at require (node:internal/modules/cjs/helpers:110:18)
}

Node.js v18.14.1
webpro commented 1 year ago

Thanks for the report, @mcmxcdev. I think I have a solution, but somehow this change or the related test still fails on Windows. I'll look into that later today.

webpro commented 1 year ago

Should be fixed in 1.12.4

mcmxcdev commented 1 year ago

I can confirm that it works again with the new release, thanks Lars!