Функция Azure жалуется на синтаксическую ошибку JS, когда синтаксис допустим - PullRequest
0 голосов
/ 11 мая 2018

У меня есть функция Azure, определенная в JS

module.exports = async function (context, req) {
    if (req.query.name || (req.body && req.body.name)) {

        // generate mock result
        const mockChecker = new mockCheckBuild();
        const result = await mockChecker.runAsync();

        context.res = {
            body: result
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body"
        };
    }
    context.done();
};

function mockCheckBuild() {
   this.statuses = ['Failed', 'Complete'];

   this.branchId = 808;

   this.buildNumbers = ['0.1.1.1023', '0.1.1.1024', '0.1.1.1025'];

   this.runAsync = async function() {
      return new Promise(resolve => 
        setTimeout(() =>
            resolve({
                branchId: this.branchId,
                latestBuild: this.statuses.randomElement(),
                buildStatus: this.buildNumbers.randomElement()
            })
        , 2000)
      );
   };

   return this;
}

Array.prototype.randomElement = function()
{
    const index = Math.floor(Math.random() * this.length);
    return this[index];
};

, через который я прошел через множество валидаторов синтаксиса, которые подтверждают правильность JavaScript. Также отмечу, что подсветка синтаксиса Azure выделяет такие слова, как async и const.

Однако, когда я запускаю его, я получаю

"Исключение при выполнении функции: Functions.CheckLatestBuild -> One или произошло больше ошибок. -> D: \ главная \ сайт \ Wwwroot \ CheckLatestBuild \ index.js: 1 \ п (функция (export, require, module, __filename, __dirname) {module.exports = асинхронная функция (context, req) {\ n
^^^^^^^^ \ n \ nSyntaxError: Неожиданная функция токена \ n в createScript (vm.js: 56: 10) \ n в Object.runInThisContext (vm.js: 97: 10) \ n в модуле ._

Есть идеи, почему? Или какой-нибудь совет, как лучше расследовать?

1 Ответ

0 голосов
/ 11 мая 2018

Функции Azure v1 запускают узел 6.x, который не поддерживает асинхронность.Если вместо этого вы попробуете Предварительный просмотр функций v2, вы можете запустить Node 8.x (и вскоре 10.x), и асинхронность будет работать.

...