Skip to content

Unable to execute node ES Modules #10565

@jmattiace

Description

@jmattiace

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.

  1. Create a new node.js project nx generate @nrwl/node:app
  2. Update tsconfig.app.json with the following fields:
"module": "esnext",
"target": "es2020"
  1. Update project.json build target to use executor @nrwl/node:webpack
  2. Update project.json build target with the following fields
"outputFileName": "main.mjs",
"webpackConfig": "webpack.config.js"
  1. Update project.json serve target to use executor @nrwl/node:node
  2. 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:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions