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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions