Ссылка на внешний скрипт в JavaScript-коде функции Azure - PullRequest
0 голосов
/ 03 января 2019

Цель

Мне бы хотелось, чтобы на конкретный файл JavaScript ссылались несколько JavaScript-функций Azure, которые управляются разными пользователями в разных подписках Azure. Все подписки находятся в рамках корпоративной подписки. Я также хотел бы, чтобы эти несколько пользователей могли изменять этот файл из одного источника.

Предлагаемое решение

Мое лучшее предположение о том, как этого добиться, - сохранить файл в общедоступном репозитории GitHub и сделать так, чтобы каждая функция ссылалась на него.

Проблема

Ссылка на внешний скрипт (в моем случае, скрипт, размещенный в GitHub) стандартными способами (насколько я понимаю) не работает при реализации в функции JavaScript Azure.

Код

Состав:

var abc = require('<external reference>');

Пример внешнего файла JS:

https://github.com/<username>/<repo>/blob/master/file.js

Неудачные попытки

Кажется, есть много устаревших методов, документированных в SO (например, rawgit), но я смотрю на ответы, последние отредактированные в 2018 году.

Альтернативы

Я знаю, что в случае, когда несколько функций в одной функции Azure (и, следовательно, в одной подписке Azure) могут ссылаться на централизованно управляемый файл с помощью:

  • Поместить его в папку Shared, добавить "watchDirectories": [ "Shared" ] к host.json и сослаться на него с require('../Shared/file.js')
  • Ссылка кода в одной функции из другой (например, в функции-2 я могу использовать require('../Function-1/file.js'))

Однако, если я не пойму неправильно, ни одна из них не отвечает требованиям, заключающимся в том, что функции могут находиться в разных функциях в разных подписках Azure.

Я новичок в JS. Спасибо за любые рекомендации. Могут быть и другие способы удовлетворить эти требования, о которых я не думаю.

1 Ответ

0 голосов
/ 03 января 2019

Вы не сможете require js-файлы в обычном смысле изнутри функции, поскольку require использует файловую систему для разрешения файлов, которых в действительности не существует внутри функции. Если js, который вы хотите запустить, доступен на github, вы можете загрузить исходный код с github. И используйте конструктор JS Function, чтобы запустить функцию, которую вы можете вызвать. Очень грубо это может выглядеть примерно так:

let myfunc;
fetchCodeToRun().then(codeString=>myfunc=new Function(codeString)); //untested

Обратите внимание, что я не слишком хорошо знаком с Azure, и у меня только небольшой опыт работы с безсерверной инфраструктурой, поэтому вполне возможно, что есть лучший способ сделать это.

Документация конструктора функции: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...