grafana / pyroscope-nodejs

Pyroscope NodeJS integration
Apache License 2.0
25 stars 18 forks source link

NodeJS cannot find module regenerator-runtime/runtime #32

Open BryanHunt opened 1 year ago

BryanHunt commented 1 year ago

We are attempting to add Pyroscope to one of our NodeJS framework modules. Pyroscope fails to load with the following error:

Error: Cannot find module '/Users/bhunt/Development/*****/modules/microservice/node_modules/regenerator-runtime/runtime' imported from /Users/bhunt/Development/*****/modules/microservice/node_modules/@pyroscope/nodejs/dist/esm/index.js
    at finalizeResolution (/Users/bhunt/Development/*****/modules/microservice/node_modules/ts-node/dist-raw/node-internal-modules-esm-resolve.js:366:11)
    at moduleResolve (/Users/bhunt/Development/*****/modules/microservice/node_modules/ts-node/dist-raw/node-internal-modules-esm-resolve.js:801:10)
    at Object.defaultResolve (/Users/bhunt/Development/*****/modules/microservice/node_modules/ts-node/dist-raw/node-internal-modules-esm-resolve.js:912:11)
    at /Users/bhunt/Development/*****/modules/microservice/node_modules/ts-node/src/esm.ts:218:35
    at entrypointFallback (/Users/bhunt/Development/*****/modules/microservice/node_modules/ts-node/src/esm.ts:168:34)
    at /Users/bhunt/Development/*****/modules/microservice/node_modules/ts-node/src/esm.ts:217:14
    at addShortCircuitFlag (/Users/bhunt/Development/*****/modules/microservice/node_modules/ts-node/src/esm.ts:409:21)
    at resolve (/Users/bhunt/Development/*****/modules/microservice/node_modules/ts-node/src/esm.ts:197:12)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:841:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:76:40)
    at link (node:internal/modules/esm/module_job:75:36)

We are running NodeJS v16.19.1 with the following mocha configuration:

{
  "mocha": {
    "reporter": "mocha-multi-reporters",
    "reporter-options": [
      "configFile=mocha-reporter-config.json"
    ],
    "loader": "ts-node/esm"
  }
}

Hacking the module and changing the import to:

import 'regenerator-runtime/runtime.js';

seems to fix the problem.

BryanHuntNV commented 8 months ago

Any chance we can get a release with this fix?

Bruno-DaSilva commented 3 months ago

FYI after the big recent refactor, this now requires all relative paths (there are many more now) to end in .js.

KKonstantinov commented 2 months ago

Same here for node v20, ESM, typescript. Any fix available?