Skip to content

Must use import to load ES Module #30

@jessegeens

Description

@jessegeens

I'm likely doing something wrong when importing solid-auth-fetcher, but I'm not sure what. I have included a relevant code snipper below:

Describe the bug
Trying to run example code from server.ts results in node crashing with the error: Must use import to load ES Module: /home/jesse/.../node_modules/node-fetch/src/index.js

To Reproduce
Put the following code snippet in a typescript file, and then run it with node:

import {getAuthFetcher, getNodeSolidServerCookie} from "solid-auth-fetcher";

async handleRequest(request: Request) {
    let serverRoot = this.configMgr.getRootConfig().serverRoot;
    let userPrefs = request.userPreferences;
    let appOrigin = request.from;
    const cookie = await getNodeSolidServerCookie(
      serverRoot,
      userPrefs.username,
      userPrefs.password
    );
    if (!cookie) {
      throw new AuthenticationError(
        `Could not sign in with given credentials for user ${userPrefs.username}`
      );
    }
    const fetcher = await getAuthFetcher(serverRoot, cookie, appOrigin);
    const result = await fetcher.fetch(request.resource);
  }

Expected behavior
The code to run without throwing a fatal error

Screenshots


internal/modules/cjs/loader.js:1102
      throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
      ^

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/jesse/Documents/Thesis/master-thesis-jesse-geens/node_modules/node-fetch/src/index.js
require() of ES modules is not supported.
require() of /home/jesse/Documents/Thesis/master-thesis-jesse-geens/node_modules/node-fetch/src/index.js from /home/jesse/Documents/Thesis/master-thesis-jesse-geens/node_modules/solid-auth-fetcher/dist/obtainAuthHeaders.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 index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from /home/jesse/Documents/Thesis/master-thesis-jesse-geens/node_modules/node-fetch/package.json.

    at new NodeError (internal/errors.js:322:7)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1102:13)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:93:18)
    at Object.<anonymous> (/home/jesse/Documents/Thesis/master-thesis-jesse-geens/node_modules/solid-auth-fetcher/dist/obtainAuthHeaders.js:8:38)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32) {
  code: 'ERR_REQUIRE_ESM'
}

Desktop (please complete the following information):

  • OS:
$ uname -a
Linux jesse-thinkpad 5.13.19-2-MANJARO #1 SMP PREEMPT Sun Sep 19 21:31:53 UTC 2021 x86_64 GNU/Linux
  • Browser [e.g. chrome, safari]: N/A
  • Version:
$ nvm current
v16.13.1

Additional context
Package.json:

"dependencies": {
    "express": "^4.17.2",
    "express-pino-logger": "^7.0.0",
    "jsonschema": "^1.4.0",
    "node-fetch": "^3.1.0",
    "pino": "^7.6.2",
    "solid-auth-fetcher": "^1.5.3"
  }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions