配置

以下属性可用于配置 Node-RED。

在作为普通应用程序运行时,它会从设置文件加载其配置。有关设置文件及其位置的更多信息,请阅读 本指南

当作为 嵌入式应用程序 运行时,配置选项通过对 RED.init() 的调用传入。然而,当以此模式运行时,某些属性将被忽略,并留给嵌入应用程序来实现。

运行时配置

flowFile
用于存储流程的文件。默认值: flows_<hostname>.json
userDir
存储所有用户数据的目录,例如流程和凭证文件以及所有库数据。默认值: $HOME/.node-red
nodesDir
搜索额外安装节点的目录。Node-RED 会在 userDir 目录下搜索 nodes 目录。此属性允许搜索额外的目录,以便节点可以在 Node-RED 安装结构之外安装。默认值: $HOME/.node-red/nodes
uiHost
监听连接的接口。默认值: 0.0.0.0 - 所有 IPv4 接口

仅适用于独立模式

uiPort
用于提供编辑器 UI 的端口。默认值: 1880

仅适用于独立模式

httpAdminRoot
编辑器 UI 的根 URL。如果设置为 false,所有管理员端点将被禁用。这包括 API 端点和编辑器 UI。要仅禁用编辑器 UI,请参见下面的 disableEditor 属性。默认值: /
httpAdminAuth
已弃用: 请参见 adminAuth

在编辑器 UI 上启用 HTTP 基本身份验证:

httpAdminAuth: {user:"nol", pass:"5f4dcc3b5aa765d61d8327deb882cf99"}

pass 属性是实际密码的 md5 哈希。可以使用以下命令来生成哈希:

node -e "console.log(require('crypto').createHash('md5').update('YOUR PASSWORD HERE','utf8').digest('hex'))"

仅适用于独立模式

httpAdminMiddleware
作为所有管理员路由添加的 HTTP 中间件函数或函数数组。 中间件函数的格式在 这里 中进行了文档说明。
httpAdminMiddleware: function(req,res,next) {
    // 对请求执行任何处理。
    // 确保在请求需要传递时调用 next()
}
httpAdminCookieOptions
当启用管理员认证时,此选项可用于自定义设置与 OAuth 身份验证流程部分所用的会话 cookie 时使用的选项。 可用选项在 这里 中进行了文档说明。
httpNodeRoot
提供 HTTP 端点的节点的根 URL。如果设置为 false,所有基于节点的 HTTP 端点将被禁用。默认值: /
httpNodeAuth
启用 HTTP 基本身份验证。有关格式,请参见 httpAdminAuth
httpRoot
设置管理员和节点端点的根 URL。它会覆盖由 httpAdminRoothttpNodeRoot 设置的值。
https
启用 https,并使用指定的选项对象,如定义的 这里

仅适用于独立模式

disableEditor
如果设置为 true,则防止运行时提供编辑器 UI。管理员 API 端点仍然处于活动状态。默认值: false
httpStatic
一个本地目录,用于提供静态网页内容。该内容从顶级 URL / 提供。当使用此属性时,必须同时使用 httpAdminRoot 以使编辑器 UI 在除 / 之外的路径上可用。

此属性也可以设置为数组,以支持多个静态目录,每个目录都有自己的一组选项。选项包括用于提供内容的本地目录的路径、用于提供内容的根 URL、可选的自定义中间件函数和可选的 CORS 配置。

例如:

httpStatic: [
  {
      path: '/opt/static/',
      root: '/private/',
      middleware: myCustomHttpMiddleware,
      cors: {

      }
  }
]

仅适用于独立模式

httpStaticAuth
对静态内容启用 HTTP 基本身份验证。有关格式,请参见 httpAdminAuth
httpStaticCors
启用对 httpStatic 端点的跨源资源共享,如在 这里 定义的。
httpNodeCors
启用提供 HTTP 端点的节点的跨源资源共享,如在 这里 定义的。
httpNodeMiddleware
作为所有 HTTP 输入节点添加的 HTTP 中间件函数或函数数组。 这允许对节点进行所需的任何自定义处理,例如身份验证。中间件函数的格式在 这里 中进行了文档说明。
httpNodeMiddleware: function(req,res,next) {
    // 对请求执行任何处理。
    // 确保在请求需要传递时调用 next()
    // 到相关的 HTTP 输入节点。
}
logging
目前仅支持控制台日志记录。可以指定各种日志记录级别。选项包括:
  • fatal - 仅记录那些使应用程序无法使用的错误
  • error - 记录被认为对特定请求致命的错误 + 致命错误
  • warn - 记录非致命问题 + 错误 + 致命错误
  • info - 记录有关应用程序一般运行的信息 + 警告 + 错误 + 致命错误
  • debug - 记录比信息更详细的信息 + 信息 + 警告 + 错误 + 致命错误
  • trace - 记录非常详细的日志 + 调试 + 信息 + 警告 + 错误 + 致命错误

默认级别是 info。对于具有有限闪存存储的嵌入式设备,您可能希望将其设置为 fatal 以最小化写入“磁盘”的次数。

externalModules
配置运行时如何处理外部 npm 模块。这包括:
  • 编辑器是否允许安装新的节点模块
  • 是否允许节点(如 Function 节点)具有自己的动态配置依赖项。

允许/拒绝列表选项可用于限制运行时将安装/加载哪些模块。它可以使用 * 作为通配符,匹配任何内容。

externalModules: {
   autoInstall: false,
   autoInstallRetry: 30,
   palette: {
      allowInstall: true,
      allowUpload: true,
      allowList: [],
      denyList: []
   },
   modules: {
      allowInstall: true,
      allowList: [],
      denyList: []
   }
}

编辑器配置

adminAuth
在编辑器和管理员 API 中启用用户级安全性。有关更多信息,请参见 保护 Node-RED
paletteCategories
定义调色板中类别的顺序。如果节点的类别不在列表中,则该类别将被添加到调色板的末尾。如果未设置,则使用以下默认顺序:
['subflows', 'common', 'function', 'network', 'sequence', 'parser', 'storage'],

注意:在用户创建子流程之前,子流程类别将是空的,并且在调色板中不可见。

编辑器主题

可以通过使用以下设置对象来更改编辑器的主题。所有部分都是可选的。

editorTheme: {
    page: {
        title: "Node-RED",
        favicon: "/absolute/path/to/theme/icon",
        css: "/absolute/path/to/custom/css/file",
        scripts: [ "/absolute/path/to/custom/script/file", "/another/script/file"]
    },
    header: {
        title: "Node-RED",
        image: "/absolute/path/to/header/image", // 或 null 以移除图像
        url: "http://nodered.org" // 可选 URL,使头部文本/图像成为此 URL 的链接
    },
    deployButton: {
        type:"simple",
        label:"保存",
        icon: "/absolute/path/to/deploy/button/image" // 或 null 以移除图像
    },
    menu: { // 通过 ID 隐藏不需要的菜单项。请参见 packages/node_modules/@node-red/editor-client/src/js/red.js:loadEditor 以获取完整列表
        "menu-item-import-library": false,
        "menu-item-export-library": false,
        "menu-item-keyboard-shortcuts": false,
        "menu-item-help": {
            label: "替代帮助链接文本",
            url: "http://example.com"
        }
    },
    tours: false, // 禁用新用户的欢迎之旅
    userMenu: false, // 即使启用了 adminAuth,也隐藏用户菜单
    login: {
        image: "/absolute/path/to/login/page/big/image" // 一个 256x256 的图像
    },
    logout: {
        redirect: "http://example.com"
    },
    palette: {
        editable: true, // *已弃用* - 请使用 externalModules.palette.allowInstall
        catalogues: [   // 替代调色板管理器目录
            'https://catalogue.nodered.org/catalogue.json'
        ],
        theme: [ // 重写节点颜色 - 规则根据类别/类型通过 RegExp 检测。
            { category: ".*", type: ".*", color: "#f0f" }
        ]
    },
    projects: {
        enabled: false // 启用项目功能
    },
    theme: "", // 为编辑器选择一个颜色主题。请参见 https://github.com/node-red-contrib-themes/theme-collection 以获取可供选择的主题集合
    codeEditor: {
        lib: "ace", // 选择编辑器使用的文本编辑组件。默认值为 "ace",但可以设置为 "ace" 或 "monaco"
        options: {
            // 以下仅适用于设置为 "monaco" 的编辑器
            theme: "vs", // 为文本编辑器组件选择一个颜色主题。必须与 packages/node_modules/@node-red/editor-client/src/vendor/monaco/dist/theme 中的主题文件名匹配
        }
    },
    mermaid: {
        theme: "default" // 为 Mermaid 图表和制图工具选择一个颜色主题。必须与 https://mermaid.js.org/config/theming.html#available-themes 中的主题名称匹配
    }
},

仪表板

ui
Node-RED-Dashboard 附加节点的主页路径可以指定。这相对于任何已定义的 httpNodeRoot

ui : { path: “mydashboard” },

节点配置

任何节点类型都可以在文件中定义自己的设置。

functionGlobalContext
Function 节点 - 附加到全局函数上下文的对象集合。例如,
functionGlobalContext: { osModule:require('os') }

可以在函数节点中访问为:

var myos = global.get('osModule');
注意 : 在 Node-RED v0.13 之前,文档化 使用全局上下文的方式是将其作为 context 的子属性进行访问:
context.global.foo = "bar";
 var osModule = context.global.osModule;
这种方法仍然被支持,但被弃用,推荐使用 global.get/global.set 函数。使用此方法存储的任何数据将不会在重启后保留,并且不会在侧边栏上下文查看器中可见。
functionExternalModules
如果设置为 true,则函数节点的设置选项卡将允许添加额外的模块,这些模块将变得可用于函数。有关更多信息,请参见 编写函数。默认值: false
functionTimeout
Function 节点 - 应用于新配置函数节点的默认超时(以秒为单位)。 默认值: 0 - 表示没有超时。
debugMaxLength
调试节点 - 发送到调试侧边栏选项卡的任何消息的最大长度(以字符为单位)。默认值: 1000
mqttReconnectTime
MQTT 节点 - 如果连接丢失,在尝试重新连接之前等待的时间(以毫秒为单位)。默认值: 5000
serialReconnectTime
串口节点 - 在尝试重新打开串口之前等待的时间(以毫秒为单位)。默认值: 5000
socketReconnectTime
TCP 节点 - 在尝试重新连接之前等待的时间(以毫秒为单位)。默认值: 10000
socketTimeout
TCP 节点 - 在超时套接字之前等待的时间(以毫秒为单位)。默认值: 120000