Jeremy Thake MSFT
Jeremy Thake MSFT

Reputation: 2138

How can i use package management in NodeJS Azure Functions?

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?

Upvotes: 33

Views: 32600

Answers (2)

Fabio Cavalcante
Fabio Cavalcante

Reputation: 12538

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

More information can be found here: https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-node?tabs=v2#dependency-management

Upvotes: 44

Nishchay Grover
Nishchay Grover

Reputation: 1

I did a similar thing and SMTP worked without using SendGrid. Below is my code for azure function.

const nodemailer = require('nodemailer');
module.exports = async function (context, myTimer) {

let transport = nodemailer.createTransport({
    host: '',
    port: 2525,
    auth: {
       user: '',
       pass: ''
    }
});


const message = {
    from: '', // Sender address
    to: '',         // List of recipients
    subject: '', // Subject line
    text: '' // Plain text body
};

transport.sendMail(message, function(err, info) {
    if (err) {
      console.log(err)
    } else {
      console.log(info);
    }
});

};

Upvotes: -1

Related Questions