Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Why is require.main.filename different on Azure that it is on my local windows machine?

Why is require.main.filename different on Azure that it is on my local windows machine?

Problem

On my local machine, this code:

var path = require('path');
var appdir = path.dirname(require.main.filename);
console.log(appdir);

will log "c:\sites\mysite"

On Azure, I see this instead: D:\Program Files (x86)\iisnode

I know, from setting the node version to be my own that the path to my app is D:\home\site\wwwroot

And, according to the docs "the entry point of the current application can be obtained by checking require.main.filename."

Any ideas on what could be going wrong?

Problem courtesy of: tooshel

Solution

When you run your application on your local machine you probably execute following command

node.exe your_application.js

That is why require.main.filename returns the entry point of your application.

Please note that when you deploy your application to Windows Azure WebSite you use iisnode - a native IIS 7/8 module that allows hosting of Node.js applications in IIS 7/8. That is why require.main.filename returns D:\Program Files (x86)\iisnode on Windows Azure.

I would recommend using __dirname module local variable (usually combined with path.join() e.g. var mydir = path.join(__dirname, '..')) in order to obtain required directory.

I hope that explains your question.

Solution courtesy of: Tom

Discussion

View additional discussion.



This post first appeared on Node.js Recipes, please read the originial post: here

Share the post

Why is require.main.filename different on Azure that it is on my local windows machine?

×

Subscribe to Node.js Recipes

Get updates delivered right to your inbox!

Thank you for your subscription

×