Search code examples
node.jsazurebotframeworkgrpcvision-api

Bot hosted in Azure with Google Vision Api - gRPC issue


Trying to use Google Vision Api from Bot Framework app hosted on Azure. The code works just fine on local but I get this error when I try it on Azure. Can someone help?

Exception while executing function: Functions.messages. mscorlib: Error: A dynamic link library (DLL) initialization routine failed.
\\?\D:\home\site\wwwroot\messages\node_modules\grpc\src\node\extension_binary\grpc_node.node
    at Error (native)
    at Object.Module._extensions..node (module.js:583:18)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (D:\home\site\wwwroot\messages\node_modules\grpc\src\node\src\grpc_extension.js:38:15)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10).

Here is the package.json that I am using:

  {
  "name": "luisbot",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "@google-cloud/vision": "^0.10.0",
    "botbuilder": "^3.7.0",
    "botbuilder-azure": "3.0.2",
    "botbuilder-location": "^1.0.4"
  },
  "devDependencies": {
    "restify": "^4.3.0"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

and the error throws while loading the vision api module - at the line mention below

var vision = require('@google-cloud/vision')

Solution

  • As of now, using grpc modules from inside the function code is not supported as Functions runtime uses Edge.js for executing JavaScript code and it does not have support for loading native modules. Related issue.