Сначала необходимо установить xmlhttprequest
модуль.
Если вы запускаете его на портале, перейдите к https://{yourfunctionappname}.scm.azurewebsites.net/DebugConsole
В консоли cmd введите cd ./site/wwwroot
, затем npm install xmlhttprequest
.
Если вы разрабатываете локально, просто откройте cmd в папке проекта вашей функции и npm install xmlhttprequest
.
Для этой ошибки
mscorlib: Ошибка: EPERM: операция не разрешена, откройте «D: \ Windows \ system32 \ .node-xmlhttprequest-sync-7048» в «Ошибка (собственная)» в Object.fs.openSync (fs.js: 641: 18) в Object.fs.writeFileSync (fs.js: 1347: 33) при отправке (D: \ home \ site \ wwwroot \ node_modules \ xmlhttprequest \ lib \ XMLHttpRequest.js: 477: 10)
Вы установили open
метод асинхронного режима false
, что означает, что этот метод выполняется синхронно.
Будет создан файл в текущем рабочем каталоге (cwd).В функции Azure по умолчанию это D:\Windows\system32
, где у нас нет доступа к созданию файла из-за Ограничения песочницы .
Если версия времени выполнения вашей функции - бета, мы можем изменить cwdфункционировать папку с помощью process.chdir("d:\\home\\site\\wwwroot\\functionname")
.И все должно работать.
Если время выполнения равно ~ 1, после изменения cwd произойдет новая ошибка - файл блокировки синхронизации .node-xmlhttprequest-sync-xxxx
не может быть удален должным образом.Поэтому после одного выполнения функция будет заблокирована в следующий раз и не сможет ответить.
Альтернативой является использование асинхронного режима или попытка использовать модуль, отличный от xmlhttprequest
.