在JavaScript Azure函数代码中引用外部脚本

时间:2019-01-03 01:29:17

标签: javascript azure azure-functions

目标

我希望特定的JavaScript文件由多个JavaScript Azure函数引用,这些JavaScript Azure函数由不同Azure订阅中的不同用户管理。所有订阅都在企业订阅中。我还希望这些多个用户能够更改此单源文件。

建议的解决方案

关于如何完成此操作,我最好的猜测是将文件存储在公共GitHub存储库中,并让每个Function引用它。

问题

在JavaScript Azure函数中实施时,以标准方式(据我所知)引用外部脚本(在我的情况下为GitHub上托管的脚本)似乎不起作用。

代码

结构:

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

示例外部JS文件:

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

尝试失败

SO上似乎记录了许多过时的方法(例如rawgit),但我正在查看上次编辑于2018年的答案。

  • https://github.com/<username>/<repo>/blob/master/file.js
  • https://raw.githubusercontent.com/<username>/<repo>/master/file.js
  • http://cdn.jsdelivr.net/gh/<username>/<repo>/file.js

替代品

我知道,在单个Azure函数中(因此在同一个Azure订阅中)多个函数可以通过以下方式引用集中管理的文件:

  • 将其放在Shared文件夹中,将"watchDirectories": [ "Shared" ]添加到host.json,然后用require('../Shared/file.js')引用它
  • 从另一个功能中引用代码(例如,在Function-2中,我可以使用require('../Function-1/file.js')

但是,除非我误解,否则都不符合功能可以驻留在不同Azure订阅中的不同功能中的要求。

我是JS新手。感谢您的指导。可能还有其他我没有想到的满足这些要求的方法。

1 个答案:

答案 0 :(得分:1)

您通常无法从函数内部requirerequire,因为Function使用文件系统来解析文件,而该文件实际上并不存在于函数内部。如果要运行的js在github上可用,则可以从github下载源代码。并使用JS let myfunc; fetchCodeToRun().then(codeString=>myfunc=new Function(codeString)); //untested 构造函数来运行创建可以调用的函数。大致来说,它可能类似于:

{{1}}

请注意,我对Azure并不是特别熟悉,并且我对无服务器基础架构的经验很少,因此很有可能会有更好的方法来实现这一目标。

函数构造函数文档:https://www.dojrp.com/