项目场景:
最近在使用Node-Red,需要在Node-red的仪表盘dashboard中使用 template node在ui上显示本地图片。
错误尝试:
使用template节点,将本地的图片的绝对路径放在src上,但是会显示无法加载本地资源。但是如果使用超链接的话,可以正常显示在ui界面上。但又不能为了一个静态资源单独再去开一个后端服务,太浪费资源。
错误信息:
原因分析:
于是查找发现,Node-Red官方配置configuration上有静态资源配置。httpStatic:a local directory from which to serve static web content from. 提供静态 Web 内容的本地目录。意思就是node-red会启动一个express的后端服务,那就可以将静态资源存放进后端服务中,直接本地访问。
解决方案:
- 在本机的.node-red目录下创建一个static目录。用于存放所有的静态资源文件。
- 向里面拖入一个p.png图片。
- .node-red文件夹中有一个 settings.js 文件,里面包含了httpStatic静态资源的路径。修改httpStatic为本机刚才创建的目录地址。
再重新启动Node-Red,可以看见打印的日志信息中,包含了刚才设置的HTTP Static的路径。
- 现在就可以访问静态文件夹中图像,只需要使用相对路径,访问http://localhost:1880/p.png 正常显示图片即可,然后在template node的img标签中,src使用相对路径/p.png,在ui界面上便可以正常显示。效果如下: