Elderjs / elderjs

Elder.js is an opinionated static site generator and web framework for Svelte built with SEO in mind.

Home Page:https://elderguide.com/tech/elderjs/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Using latest version of node-fetch is not supported

douglasward opened this issue · comments

Using the latest version of node-fetch (3.0.0) causes the following error when requiring it in a route.js file for example:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /Users/douglas/projects/go-elderjs/node_modules/node-fetch/src/index.js
require() of ES modules is not supported.
require() of /Users/douglas/projects/go-elderjs/node_modules/node-fetch/src/index.js from /Users/douglas/projects/go-elderjs/src/routes/events/route.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 /Users/douglas/projects/go-elderjs/node_modules/node-fetch/package.json.

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1089:13)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12)
    at Module.require (internal/modules/cjs/loader.js:961:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at Object.<anonymous> (/Users/douglas/projects/go-elderjs/src/routes/events/route.js:1:15)
    at Module._compile (internal/modules/cjs/loader.js:1072:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12) {
  code: 'ERR_REQUIRE_ESM'
}

Downloading to 2.6.5 "fixes" the error.

@douglasward Elder.js is written in cjs and what this error is saying is that it can't be required it has to be imported.

Not possible with Elder.js current structure. Open to a PR to help resolve it, but currently don't have a business case for needing to upgrade to esm yet. In fact one of the core packages we rely on doesn't support esm yet so we'll have to wait a bit longer.

Thanks @nickreese. Do you think it would be worth noting this in the documentation? It references node-fetch a few times. https://elderguide.com/tech/elderjs/#fetching-external-data.

I wanted to make a pull request, but I couldn't find a repo with the documentation checked into it

Here is the location to edit. Thank you for the PR: https://github.com/Elderjs/docs/blob/master/elderguide.com/elderjs.md