Я пытаюсь разработать функцию в VS Code, которая принимает URL-адрес в качестве входных данных и возвращает ответ после завершения обработки. Однако, когда эта функция запускается, она ничего не возвращает. Я пробовал тестировать аналогичный код в Webstorm и подтверждаю, что он отлично регистрирует результаты в console.log. Я новичок в узле и обещаниях, поэтому не уверен, что делаю неправильно.
Изменить - добавлено ключевое слово return перед driver.get в соответствии с предложением @hellikiam. Также добавлен простой оператор журнала, чтобы подтвердить, что результаты доступны, но не возвращаются в теле.
var AxeBuilder = require('@axe-core/webdriverjs'),
WebDriver = require('selenium-webdriver');
const chromedriver = require('chromedriver');
const chrome = require("selenium-webdriver/chrome");
const screen = {
width: 640,
height: 480
};
chrome.setDefaultService(new chrome.ServiceBuilder(chromedriver.path).build());
var driver = new WebDriver.Builder()
.forBrowser('chrome')
.setChromeOptions(new chrome.Options().headless().windowSize(screen))
.build();
module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
const url = (req.query.url || (req.body && req.body.url));
return driver.get(url).then(function () {
new AxeBuilder(driver).analyze(function (err, results) {
resultsJson = JSON.stringify(results);
console.log(resultsJson)
context.res = {
status: 200, /* Defaults to 200 */
body: resultsJson,
headers: {
'Content-Type': 'application/json'
}
};
if (err) {
// Handle error somehow
}
});
});
context.done();
}