【问题标题】:How to develop a new IoTAgent如何开发新的 IoTAgent
【发布时间】:2020-10-10 10:08:25
【问题描述】:

我正在根据https://iotagent-node-lib.readthedocs.io/en/latest/howto/index.html开发一个新的物联网代理

我正在尝试运行以下代码:node index.js

但出现警告:(node:6176) [DEP0097] DeprecationWarning: 在 MakeCallback 中使用域属性已被弃用。请改用 MakeCallback 的 async_context 变体或 AsyncResource 类。 DEP0097 - 弃用警告 (NODE.JS)

有什么解决方法的建议吗? 谢谢!

【问题讨论】:

    标签: node.js fiware


    【解决方案1】:

    您似乎在 Node 14 下运行 IoT 代理。域 API 为 deprecated,这是您发出警告的原因。 IoT 代理节点库中的 code 目前使用域 API 与 Telefonica Steelskin 进行通信。

    IoT 代理已针对 LTS 节点版本进行了测试(目前为 10 和 12,请参阅 here),并且节点 14 直到 2020 年 10 月才会达到 LTS,因此我预计临时版本应该可以解决该问题。

    与此同时,如果您在较早版本的 Node 下运行代理 - 例如通过 Docker。可以在 Custom IoT Agent tutorial Dockerfile 中找到一个示例

    ARG  NODE_VERSION=10.17.0-slim
    FROM node:${NODE_VERSION}
    
    
    COPY . /opt/iotXML/
    
    WORKDIR /opt/iotXML
    
    RUN \
        apt-get update && \
        apt-get install -y git && \
        npm install pm2@3.2.2 -g && \
        echo "INFO: npm install --production..." && \
        npm install --production && \
        # Remove Git and clean apt cache
        apt-get clean && \
        apt-get remove -y git && \
        apt-get -y autoremove && \
        chmod +x docker/entrypoint.sh
    
    USER node
    ENV NODE_ENV=production
    
    # Expose 4041 for NORTH PORT, 7896 for HTTP PORT
    EXPOSE ${IOTA_NORTH_PORT:-4041} ${IOTA_HTTP_PORT:-7896}
    
    ENTRYPOINT ["docker/entrypoint.sh"]
    CMD ["-- ", "config.js"]
    

    在构建 Docker 容器时,可以通过在 Docker 构建命令中添加 NODE_VERSION 来更改节点版本。

    【讨论】:

    • 您好杰森,感谢您的回复。我将节点降级到版本 8,它解决了警告。我尝试遵循自定义 IoT 代理教程 Dockerfile github.com/FIWARE/tutorials.Custom-IoT-Agent 但是当我尝试运行命令 ./services 创建一条消息 ERROR: pull access denied for fiware/iotagent-xml, 存储库不存在或可能需要“docker login”: denied:请求的资源访问被拒绝。
    • 如果脚本不适合你,你也可以cd iot-agentDocker build -t iotagent-xml .。该错误可能与您的 Docker 版本或 docker-compose 版本有关
    • 我输入了 docker-compose -vdocker version,如教程中所述。结果如下:docker-compose 版本 1.24.1,构建 4667896b。 docker 版本:19.03.5 我在 windows 10 上运行 docker 工具箱,不知道是不是问题。我试过 cd iot-agentdocker build -f Dockerfile -t renatobdo/iotagent-xml .
    • 我将图像的名称从 docker-compose.yml 上的服务 iot-agent 更改为 renatobdo/iotagent-xml 因为我没有权限推送到 fiware/ iotagent-xml dockerhub 和图像 fiware/iotagent-xml 在 dockerhub 上不存在。我推送了我的存储库 renatobdo/iotagent-xml,它是公开的。我从github.com/FIWARE/tutorials.Custom-IoT-Agent./services start 执行了 ./services create 并且它起作用了。但是,我不知道为什么图像 renatobdo/iotagent-xml 没有运行。
    • 所以命令 curl -X GET \ '192.168.99.100:4041/iot/about' 不起作用。有什么建议吗?
    【解决方案2】:

    问题与 docker for windows 工具箱有关。我安装了 linux 并且自定义的 iot 代理工作。我认为问题是由于环境变量而发生的。由于某种原因,Windows 10 不会启动项目中存在的 .env 存档变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 2011-01-11
      • 1970-01-01
      • 2015-07-18
      • 2011-02-16
      相关资源
      最近更新 更多