红色节点自定义node_modules位置

时间:2019-02-02 15:09:41

标签: node.js npm node-red npm-link

我正在使用像我这样的Express.js应用程序中嵌入的node-red https://nodered.org/docs/embedding。当像这样嵌入时,红色的节点无法从npm加载新节点。

问题是,在settings.js中定义自定义用户目录时,例如userDir: 'node-red-data/' Node-red将已加载的节点添加到node_modules中的此文件夹中。

所以我有两个node_modules文件夹:

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

节点红色如何无法在myapp/node-red-data/node_modules端加载模块

有什么解决办法吗?

2 个答案:

答案 0 :(得分:0)

问题在设置文件上。

我在用户目录中的设置:

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

正确的设置:

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

因此,向用户目录和节点目录添加静态路径可以使其工作

答案 1 :(得分:0)

我有类似的问题。
我用了process.execPath

userdir = path.resolve(process.execPath,'..'); //better that __dirname; 

因为在编译应用程序时目录是不同的。

// Create the settings object - see default settings.js file for other options
var settings = {
    verbose: true,
    httpAdminRoot:"/admin",
    httpNodeRoot: "/",
    userDir: userdir, // problem with dir...
    flowFile: 'flows.json',
};