【问题标题】:'require' keyword doesn't work within Node Red Function node'require' 关键字在 Node Red Function 节点中不起作用
【发布时间】:2016-08-13 21:39:44
【问题描述】:

节点红色函数节点中的第一行是

var moment = require('moment-timezone');

...

我正在尝试为传感器数据建立正确的时区日期/时间戳。此节点运行时出现以下错误;

ReferenceError: 要求未定义(第 1 行,第 14 列)

顺便说一句,这个函数还有其他 JavaScript 总是可以完美运行。

我的 Package.json 没有错误,并且添加了 "moment-timezone":"0.5.3"。

我从一些或研究中了解到,我需要向 settings.js 文件中添加一些内容,但是,我需要一些关于添加内容的指导,以便识别“require”。

【问题讨论】:

    标签: javascript node.js ibm-cloud node-red


    【解决方案1】:

    正如this GitHub issue answer 所述,您不能在函数节点内使用require 本身,但您可以将外部模块添加到用于运行函数的沙箱中。您可以在 settings.js 文件中执行此设置 functionGlobalContext,如下所示:

    functionGlobalContext: {
        tzModule:require('moment-timezone')
    }
    

    然后可以使用以下代码引用该模块:

    var moment = global.get('tzModule');
    

    查看Node-RED documentation on global-context了解完整详情。

    【讨论】:

    • 不知道如何编辑 settings.js 文件。我是否真的必须使用 CLI 获取它,在本地编辑然后上传。哎呀!更重要的是,我开始使用 node red starter 开发 bluemix,并且已经毕业使用标准节点和带有我的 javascript 的函数节点。不优雅,但一切正常。当我尝试进一步发展到使用 GIT 和 devops 时,它不会将任何工作复制到初始存储库中。然而,我在这里的主要目标是听取 Jake 的建议并按照他的指示修改 setting.js 文件。最优雅的方式是什么?
    • 不幸的是,Bluemix 上的 Add Git 按钮只会使用您的应用程序的启动代码来填充您的 Git 存储库。您必须手动进行更改并将其应用回您的存储库。对于您的主要问题,您需要为您的应用更新bluemix-settings.js 才能实现这一点。关注Nick's answer here 了解如何操作。
    • 完美运行!而且我会在这个 GIT 主题上绞尽脑汁,所以也感谢你的建议。
    【解决方案2】:
    Settings file:/Users/aiquantong/.node-red/settings

    请在此文件中进行配置,它将起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      相关资源
      最近更新 更多