#NodeJS function throws error `Error [ERR_REQUIRE_ESM]: require() of ES Module...`

14 messages · Page 1 of 1 (latest)

ivory maple
#

@bright ivy @pastel atlas
Some of my nodejs functions throw the following error on execution:

Error [ERR_REQUIRE_ESM]: require() of ES Module /usr/code-start/src/index.js from /usr/local/src/server.js not supported.
Instead change the require of index.js in /usr/local/src/server.js to a dynamic import() which is available in all CommonJS modules.
    at Hook._require.Module.require (/usr/local/lib/node_modules/pm2/node_modules/require-in-the-middle/index.js:101:39)
    at /usr/local/src/server.js:55:28
#

Example that works:
appwrite.json

{
            "$id": "cleanup_kas_sessions",
            "name": "cleanup_kas_sessions",
            "runtime": "node-18.0",
            "execute": [],
            "events": [],
            "schedule": "",
            "timeout": 15,
            "enabled": true,
            "logging": true,
            "entrypoint": "src/main.js",
            "commands": "npm install",
            "ignore": [
                "node_modules",
                ".npm"
            ],
            "path": "functions/cleanup_kas_sessions"
        }

main.js (function file)

import { Client, Databases, Query } from 'node-appwrite';

export default async ({ req, res, log, error }) => {
  log('run function cleanup_kas_sessions');
  // do some stuff
  ...

Example that doesn't work:
appwrite.json

{
            "$id": "authenticate_kas",
            "name": "authenticate_kas",
            "runtime": "node-18.0",
            "path": "functions/authenticate_kas",
            "entrypoint": "src/index.js",
            "commands": "npm install",
            "ignore": [
                "node_modules",
                ".npm"
            ],
            "execute": [],
            "events": [],
            "schedule": "",
            "timeout": 15,
            "enabled": true,
            "logging": true
        },

index.js (function file)

import { Client, Databases } from "node-appwrite";
import { v4 as uuidv4 } from "uuid";
import * as superagent from "superagent"; // even if I comment this out it doesn't work

export default async ({ req, res, log, error }) => {
  log("run function authenticate_kas"); // this is never being called
  // do some stuff

In both functions package.json I have the entry "type": "module",.

Tried to put appwrite container down and up. Deployed several times.

next garden
ivory maple
#

@next garden I just tried that. Didn't help.

#

lol, I created a new function nodetest and copied the complete codefile and the dependencies to the new function, deployed and it works 😄

#

So whats going on? 🙂

next garden
ivory maple
#

what do you mean by format?

next garden
next garden
ivory maple
#

Yea of course. Here or in github?

next garden
ivory maple
#

ok