Search code examples
node.jsnpmnode-rednpm-link

Node-Red custom node_modules location


I'm using node-red as embedded in my Express.js application like this https://nodered.org/docs/embedding. When embedded like this node-red cant load new nodes from npm.

Issue is that when defining custom user dir in settings.js, for example userDir: 'node-red-data/' Node-red adds loaded nodes to this folder inside node_modules.

So I have two node_modules folder:

myapp/node_modules => this is containing node-red
myapp/node-red-data/node_modules => this is containing node-red extra nodes

Some how node-red can't load modules in side myapp/node-red-data/node_modules

Is there any solutions?


Solution

  • Issue was on the settings file.

    My setting in user dir:

    var settings = {
        httpAdminRoot: '/admin',
        httpNodeRoot: '/ap',
        nodesDir: '/nodes',
        flowFile: "flows.json",
        userDir: './data/'
    }
    

    Right setup:

    var path = require('path');
    var dir = path.dirname(__filename);
    var settings = {
        httpAdminRoot: '/admin',
        httpNodeRoot: '/ap',
        nodesDir: dir + '/nodes',
        flowFile: "flows.json",
        userDir: dir+'/data/'
    }
    

    So adding static path to user dir and nodes dir makes it working