How can i use package management in NodeJS Azure Functions?

Jeremy Thake MSFT picture Jeremy Thake MSFT · Apr 6, 2016 · Viewed 19.1k times · Source

I'm trying to build this sample project as a Azure Function and it requires some packages https://github.com/OfficeDev/O365-Nodejs-Microsoft-Graph-App-only

I can see that I can use packet management in NodeJS Azure Functions using https://azure.microsoft.com/en-us/documentation/articles/functions-reference/#nodejavascript-api

I tried to use this

var request = require('request');

This statement

You can include packages in your function directory (i.e. via npm install) and then import them to your function in the usual ways (i.e. via require('packagename'))

So I created a project.json with this in it like the C# Azure Function uses:

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "chalk": "^1.1.1",
        "q": "^1.4.1",
        "request": "^2.67.0"
      }
    }
  }
}

and get this error

2016-04-06T19:49:42.026 Exception while executing function: Functions.MicrosoftGraphWebHookNode. mscorlib: One or more errors occurred. Error: Cannot find module 'request'
    at Function.Module._resolveFilename (module.js:339:15)
    at Function.Module._load (module.js:290:25)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (D:\home\site\wwwroot\MicrosoftGraphWebHookNode\index.js:1:77)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17).

Should the project.json work?

Answer

Fabio Cavalcante picture Fabio Cavalcante · Apr 7, 2016

You can include your package.json in you function directory and run npm install as you normally would with Node.js projets using Kudu or the Console in the Azure portal.

More information can be found here: https://azure.microsoft.com/en-us/documentation/articles/functions-reference/#node-version-amp-package-management