Azure函数+ node.js – 找不到模块

我已经创build了一个具有适当结构的Azure CLI的应用程序和函数,因此:

/host.json /local.settings.json /mycustomfunction/function.json /mycustomfunction/index.js /mycustomfunction/package.json /node_modules 

源代码从BitBucket下载,与Kudu部署,build立( node_modules被提取,azure是其中之一),一切都是绿色的。

当涉及到依赖时,只有一个 – "azure": "^2.0.0-preview"

但是当我在Azure上运行该函数时,出现错误

2017-09-08T13:59:06.091 JavaScript HTTP trigger function processed a request. 2017-09-08T13:59:06.216 Exception while executing function: Functions.mycustomfunction. mscorlib: Error: Cannot find module 'azure' at Function.Module._resolveFilename (module.js:469:15)

使用func host start时,相同的function在本地工作正常…

我究竟做错了什么? 🙂

根本原因应该是因为您还没有在函数应用程序的Kudu控制台中运行npm install命令来安装定义在函数应用程序的package.json中的必要节点模块。

遵循本指南: 节点版本和软件包pipe理

以下是上述参考指南中的一些要点。

上传package.json文件后,在Kudu远程执行控制台中运行npm install命令。

此操作将下载package.json文件中指示的软件包并重新启动该function应用程序。

安装完所需的软件包后,通过调用require('packagename')将它们导入到函数中,如下例所示:

 // Import the underscore.js library var _ = require('underscore'); var version = process.version; // version === 'v6.5.0' module.exports = function(context) { // Using our imported underscore.js library var matched_names = _ .where(context.bindings.myInput.names, {first: 'Carla'}); 

这似乎是Azure函数的Shared / Consumption模型的问题。 我注意到,在运行npm install ,大多数情况下进程会超时, node_modules文件夹中没有显示包,只保留.staging文件夹。 创build一个新的function应用程序与专用的应用程序服务计划后,一切按预期工作。

另一个(可能更好的)解决scheme是包含azure-sb模块, instead of azure 。 它提供了足够的function来查询Azure服务总线,而它却小得多,即使使用共享层资源,Kudu也能够获取它。