-
Notifications
You must be signed in to change notification settings - Fork 233
Open
Labels
8.10-candidateagent-nodejsMake available for APM Agents project planning.Make available for APM Agents project planning.
Description
Describe the bug
When using --experimental-modules
with the corresponding "type": "module",
inside the package.json, the elastic-apm-node/start
module is unable to load the config file:
Elastic APM initialization error: Can't read config file /home/luca/routeplanner-service/elastic-apm-node.js
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/luca/routeplanner-service/elastic-apm-node.js
require() of ES modules is not supported.
require() of /home/luca/routeplanner-service/elastic-apm-node.js from /home/luca/routeplanner-service/node_modules/elastic-apm-node/lib/config.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename elastic-apm-node.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from /home/luca/routeplanner-service/package.json.
To Reproduce
Steps to reproduce the behavior:
- Create a project that imports
elastic-apm-node/start
- Create the config file
elastic-apm-node.js
- Set the
type: "module"
setting in package.json - Launch project using
--experimental-modules
Expected behavior
The elastic-apm-node/start
is expected to load the configuration correctly using either the .cjs extension or making it available as an imported module itself.
Environment (please complete the following information)
- OS: WSL Ubuntu 18.04
- Node.js version: v13.7.0
- APM Server version: ?
- Agent version: 3.3.0
How are you starting the agent? (please tick one of the boxes)
- Calling
agent.start()
directly (e.g.require('elastic-apm-node').start(...)
) - Requiring
elastic-apm-node/start
from within the source code - Starting node with
-r elastic-apm-node/start
Additional context
-
Agent config options
Click to expand
{ // Override service name from package.json // Allowed characters: a-z, A-Z, 0-9, -, _, and space serviceName: 'routeplanner-service', // Use if APM Server requires a token secretToken: '', // Set custom APM Server URL (default: http://localhost:8200) serverUrl: '', active: true, }
-
package.json
dependencies:Click to expand
"name": "routeplanner-service", "version": "1.0.0", "description": "", "module": "index.js", "type": "module", "scripts": { "start": "node --experimental-modules --es-module-specifier-resolution=node -r elastic-apm-node/start ./index.js", "debug": "node --experimental-modules --es-module-specifier-resolution=node --inspect-brk ./index.js" }, ... }
delvedor
Metadata
Metadata
Assignees
Labels
8.10-candidateagent-nodejsMake available for APM Agents project planning.Make available for APM Agents project planning.