我使用Azure CLI创建了一个应用程序和一个函数,它具有适当的结构,所以:
/host.json
/local.settings.json
/mycustomfunction/function.json
/mycustomfunction/index.js
/mycustomfunction/package.json
/node_modules
源代码从BitBucket下载,与Kudu一起部署,内置( 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
...
我做错了什么? :)
答案 0 :(得分:0)
根本原因应该是因为您没有在功能应用程序的Kudu控制台中运行 npm install 命令来安装功能应用程序中定义的必要节点模块。 s package.json。
请遵循以下指南:Node version and Package Management
以下是上述参考指南中的一些要点。
上传package.json文件后,运行 npm install 命令 在 Kudu远程执行控制台中。
此操作会下载 package.json文件中指示的包并重新启动该函数 应用
安装完所需的软件包后,将它们导入到您的软件包中 通过调用
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'});
答案 1 :(得分:0)
似乎问题出在Azure功能的共享/消费模型上。我注意到在运行npm install
时,大多数情况下进程会超时,node_modules
文件夹中没有包,只留下.staging
文件夹。使用专用的应用服务计划创建新的功能应用程序后,一切都按预期工作。
另一个(可能更好的)解决方案是包含azure-sb
模块,instead of azure
。它提供了足够的功能来查询Azure Service Bus,虽然它明显更小,但Kudu甚至可以使用Shared Tier资源来获取它。