NodeJS模块执行用户脚本时找不到外部函数

时间:2015-07-31 08:11:36

标签: javascript node.js module workflow external

我对nodeJS很新。

我正在使用nodeJS模块node-workflow

基本上,这个模块是一个协调器,它接受一个自定义的javascript脚本(=工作流定义),然后将其序列化并存储在REDIS数据库中(例如),然后由节点按需执行-workflow 模块。

工作流定义由任务组成,如下所示:

var my_external_module = require('my_external_module');

var workflow = module.exports = {
        name: 'Workflow Test',
        chain: [{
                    name: 'TASK 1',
                    timeout: 30,
                    retry: 1,
                    body: function(job, cb) {
                        // Execute external function
                        my_external_module.hello("Monkey");
                        return cb(null)
                    },
                },
...

首先,我将我的函数my_external_module.hello()放在工作流脚本旁边的.js文件中。 当我运行 node-workflow 模块时,我收到以下错误:

  

初始化跑步者时出错:

     

[ReferenceError:my_external_module未定义]

所以我创建了一个模块 my_external_module , 并在: ./ node_modules / my_external_module / index.js

    module.exports = {
        hello: function(name) {
            console.log("Hello, " + name);
        }
    };

当我运行 node-workflow 模块时,我得到了同样的错误:

  

初始化跑步者时出错:

     

[ReferenceError:my_external_module未定义]

似乎 require(...)应位于 node-workflow 模块的.js文件之一,因此我必须破解一个模块的文件,但它有点脏。

我错过了什么吗?

或者有没有办法在Python中定义$ PATH,以便我的函数可以从任何地方访问。

1 个答案:

答案 0 :(得分:0)

你必须要求:

var my_external_module = require('./my_external_module');

注意./这意味着Node应该搜索./my_external_module.js

这样的文件

如果省略./节点查看(通常)node_modules目录中已安装的模块