#[SOLVED] Issue: no log output on error

11 messages · Page 1 of 1 (latest)

ripe girder
#

I have tried this on multiple machines with a fresh install of AppWrite:
Based on example on https://appwrite.io/docs/server/databases?sdk=nodejs-default#databasesCreate

const sdk = require("node-appwrite");

module.exports = async function (req, res) {
  const client = new sdk.Client();
  const database = new sdk.Databases(client);

  if (
    !req.variables['APPWRITE_FUNCTION_ENDPOINT'] ||
    !req.variables['APPWRITE_FUNCTION_API_KEY']
  ) {
    // Changed 'console.warn()' to 'console.log()' or else I would never see this message.
    console.log("Environment variables are not set. Function cannot use Appwrite SDK.");
  } else {
    client
      .setEndpoint(req.variables['APPWRITE_FUNCTION_ENDPOINT'])
      .setProject(req.variables['APPWRITE_FUNCTION_PROJECT_ID'])
      .setKey(req.variables['APPWRITE_FUNCTION_API_KEY'])
      .setSelfSigned(true);
  }

  const promise = database.create(sdk.ID.unique(), 'test');
  
  // This part does not output anything :( (see attached images)
  promise.then(function (response) {
      console.log(response);
  }, function (error) {
      console.log(error);
  });

  res.json({
    areDevelopersAwesome: true,
  });
};

Am I missing something?

empty drift
ripe girder
#

Ok! I will keep that in mind, thanks for the fast reply.

empty drift
#

For now what I'm doing is to add the logs back to the request when I'm developing, like so

  let logs = '';
  // This part does not output anything :( (see attached images)
  promise.then(function (response) {
    logs = response;
  }, function (error) {
    logs = error;
  });

  res.json({
    logs: logs,
    areDevelopersAwesome: true,
  });
ripe girder
#

Great, I will copy your solution for now. I thought it may have been a bug :p

#

This "Issue" is resolved!

magic forge
#

Please mark it as resolved @ripe girder

ripe girder
#

I closed it, is that ok?

empty drift
#

You can edit the title and [Solved] - before it

ripe girder
#

[SOLVED] Issue: no log output on error

ripe girder
#

This may help anyone facing the same issue.
Avoid using .then() and .catch()! Use async, await in combination with a try/catch block:

try {
  const response = await database.create(sdk.ID.unique(), 'test');
  console.log(response)
} catch (error) {
  console.log(error)
}

Logging like this will work.
In addition: throwing errors will (intentionally) fail the function and will be listed under the "Errors" tab. See attached image for example.

if (!payload.name) {
  throw new Error('No name was supplied, aborting...');
}