Current Behavior
When attempting to execute an ES Module with the @nrwl/node:node executor, we get the error reported in the below Failure Logs section. After debugging, I've identified that the issue is because the executor is attempting to require the module, which is of course not supported for ES Modules.
Expected Behavior
The ES Module node.js application should properly execute without errors.
Steps to Reproduce
Pull this repo in order to reproduce.
- Create a new node.js project
nx generate @nrwl/node:app
- Update
tsconfig.app.json with the following fields:
"module": "esnext",
"target": "es2020"
- Update
project.json build target to use executor @nrwl/node:webpack
- Update
project.json build target with the following fields
"outputFileName": "main.mjs",
"webpackConfig": "webpack.config.js"
- Update
project.json serve target to use executor @nrwl/node:node
- Create root
webpack.config.js file with the following content
module.exports = (config, context) => ({
...config,
experiments: {
...config.experiments,
outputModule: true,
topLevelAwait: true,
},
output: {
path: config.output.path,
chunkFormat: 'module',
library: {
type: 'module',
},
},
})
Failure Logs
/app/node_modules/@nrwl/node/src/executors/node/node-with-require-overrides.js:16
return originalLoader.apply(this, arguments);
^
Error [ERR_REQUIRE_ESM]: require() of ES Module /app/dist/packages/test/main.mjs not supported.
Instead change the require of /app/dist/packages/test/main.mjs to a dynamic import() which is available in all CommonJS modules.
at Function.Module._load (/app/node_modules/@nrwl/node/src/executors/node/node-with-require-overrides.js:16:31)
at Object.<anonymous> (/app/node_modules/@nrwl/node/src/executors/node/node-with-require-overrides.js:19:1)
Environment
$ nx report
> NX Report complete - copy this into the issue template
Node : 16.13.0
OS : darwin x64
npm : 8.1.0
nx : 14.1.7
@nrwl/angular : Not Found
@nrwl/cypress : Not Found
@nrwl/detox : Not Found
@nrwl/devkit : 14.1.7
@nrwl/eslint-plugin-nx : 14.1.7
@nrwl/express : Not Found
@nrwl/jest : 14.1.7
@nrwl/js : 14.1.7
@nrwl/linter : 14.1.7
@nrwl/nest : 14.1.7
@nrwl/next : Not Found
@nrwl/node : 14.1.7
@nrwl/nx-cloud : 14.0.3
@nrwl/nx-plugin : Not Found
@nrwl/react : Not Found
@nrwl/react-native : Not Found
@nrwl/schematics : Not Found
@nrwl/storybook : Not Found
@nrwl/web : Not Found
@nrwl/workspace : 14.1.7
typescript : 4.3.5
rxjs : 7.2.0
---------------------------------------
Community plugins:
Current Behavior
When attempting to execute an ES Module with the
@nrwl/node:nodeexecutor, we get the error reported in the below Failure Logs section. After debugging, I've identified that the issue is because the executor is attempting torequirethe module, which is of course not supported for ES Modules.Expected Behavior
The ES Module node.js application should properly execute without errors.
Steps to Reproduce
Pull this repo in order to reproduce.
nx generate @nrwl/node:apptsconfig.app.jsonwith the following fields:project.jsonbuildtarget to use executor@nrwl/node:webpackproject.jsonbuildtarget with the following fieldsproject.jsonservetarget to use executor@nrwl/node:nodewebpack.config.jsfile with the following contentFailure Logs
Environment