Как я могу вызвать помощника из консоли sails?

#sails.js #helper

#sails.js #помощник

Вопрос:

я пытаюсь создать помощника helloworld в sails.js (пример здесь)

мой файл get.js и паруса называют вспомогательную функцию, например get()

get.js файл:

 module.exports = {

  friendlyName: 'Format welcome message',

  description: 'Return a personalized greeting based on the provided name.',

  inputs: {

    name: {
      type: 'string',
      example: 'Ami',
      description: 'The name of the person to greet.',
      required: true
    }

  },

  fn: async function (inputs, exits) {
    var result = `Hello, ${inputs.name}!`;
    return exits.success(result);
  }

};
 

но когда я делаю это в консоли sails

 await sails.helpers.get("john")
 

он возвращает ошибку:

 SyntaxError: await is only valid in async function
 

я не могу найти, где ошибка, или если есть ошибка. что может быть не так?
заранее спасибо

Ответ №1:

Ошибка, которую вы видите, заключается в том, что вы можете await вернуть функцию только из другой async функции. Если вы вызываете код «прямо из консоли», он взорвется, как вы видели.

Для быстрого тестирования / настройки вы можете получить возвращаемое значение от вашего помощника в консоли, используя .then()

 sails.helpers.get("john").then(console.log).catch(console.error)
 
 sails.helpers.get("john").then((greeting) => {
  console.log('Got greeting:', greeting)
}).catch(console.error);
 

Или, обернув вспомогательный вызов в асинхронный IIFE, затем используя await .

 (async () => {
  let greeting = await sails.helpers.get("john")
  console.log(greeting)
})();
 

Комментарии:

1. Или вы можете использовать sails.helpers.get("john").log() . Журнал ведет себя так, как будто вы помещаете await перед помощником. Если я помню, Майк Макнил сказал, что в будущем консоль sails будет поддерживать await.