【发布时间】:2017-05-06 01:58:12
【问题描述】:
我正在开发一个 Sails.js 项目,该项目需要我使用 this NPM package。我创建了一个新的 Sails.js 服务来在 npm install-ing 之后调用这个包,如下所示:
// Require and initialize the rules engine
var jsonRulesEngine = require('json-rules-engine'),
rulesEngine = new jsonRulesEngine();
当我运行此脚本时,我收到以下错误:
/Users/Nag/Code/learn-nodejs/server/node_modules/bluebird/js/release/async.js:61
fn = function () { throw arg; };
^
TypeError: jsonRulesEngine is not a constructor
at Object.verify (/Users/Nag/Code/learn-nodejs/server/api/services/RulesService.js:21:27)
at Object.wrapper [as verify] (/Users/Nag/Code/learn-nodejs/server/node_modules/@sailshq/lodash/lib/index.js:3250:19)
at /Users/Nag/Code/learn-nodejs/server/api/controllers/UtilsController.js:113:43
at /Users/Nag/Code/learn-nodejs/server/api/services/RedisService.js:55:13
at tryCatcher (/Users/Nag/Code/learn-nodejs/server/node_modules/bluebird/js/release/util.js:16:23)
at Promise.successAdapter [as _fulfillmentHandler0] (/Users/Nag/Code/learn-nodejs/server/node_modules/bluebird/js/release/nodeify.js:23:30)
at Promise._settlePromise (/Users/Nag/Code/learn-nodejs/server/node_modules/bluebird/js/release/promise.js:566:21)
at Promise._settlePromise0 (/Users/Nag/Code/learn-nodejs/server/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/Users/Nag/Code/learn-nodejs/server/node_modules/bluebird/js/release/promise.js:693:18)
at Async._drainQueue (/Users/Nag/Code/learn-nodejs/server/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/Users/Nag/Code/learn-nodejs/server/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/Users/Nag/Code/learn-nodejs/server/node_modules/bluebird/js/release/async.js:17:14)
at Immediate.<anonymous> (/Users/Nag/Code/learn-nodejs/server/node_modules/async-listener/glue.js:188:31)
at runCallback (timers.js:666:20)
at tryOnImmediate (timers.js:639:5)
at processImmediate [as _immediateCallback] (timers.js:611:5)
[nodemon] app crashed - waiting for file changes before starting...
任何线索为什么我会得到这个错误?在包的示例部分,包的所有者使用 ES6 格式导入包,而我需要它。这有什么不同吗?
【问题讨论】:
-
@AndrewLi 尝试了您的建议,但现在显示为
TypeError: Cannot call a class as a function。 -
@AndrewLi 我犯了一个错误,把它叫做 var Engine = require('json-rules-engine').Engine();`。你原来的评论是正确的。如果您按原样添加,很高兴将其标记为答案。
-
我错了,
Engine是默认导出的。我已经编辑了答案以反映真正的原因。