zx: [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined in package.json

Nbb, a ClojureScript interpreter for Node.js uses dynamic import to load libraries. To resolve which JS file to load, it uses code like the following:

import { createRequire } from 'module';

const req = createRequire(import.meta.url);

console.log(req.resolve('zx'));

This code worked in zx 5.3.0 but stopped working in 6.0.7 with the following error:

$ node script.mjs
path
node:internal/errors:465
    ErrorCaptureStackTrace(err);
    ^

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined in /private/tmp/test-nbb/node_modules/zx/package.json
    at new NodeError (node:internal/errors:372:5)
    at throwExportsNotFound (node:internal/modules/esm/resolve:433:9)
    at packageExportsResolve (node:internal/modules/esm/resolve:657:7)
    at resolveExports (node:internal/modules/cjs/loader:482:36)
    at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
    at Function.resolve (node:internal/modules/cjs/helpers:108:19)
    at file:///private/tmp/test-nbb/script.mjs:6:17
    at ModuleJob.run (node:internal/modules/esm/module_job:197:25)
    at async Promise.all (index 0) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 1
  • Comments: 29

Most upvoted comments

I confirm the same issue on the latest version, version 4.3 works fine

Now I’m not sure if this is a Node.js bug either since when I add:

      "import": "./src/index.mjs",
      "require": "./src/index.mjs",

then it also works again. I guess I’m stuck for now then, until I can use import.meta.resolve.

All fixed now, nbb 0.3.7 works with zx 6.0.0+:

(ns script
  (:require ["zx" :refer [$]]
            [nbb.core :refer [await]]))

(await ($ #js ["ls" "-la"]))
(prn :foo 1 2 3)

Maybe we will one day figure it out, thanks for the time and help 😃.