【发布时间】:2017-02-23 00:01:24
【问题描述】:
我是 seneca 的菜鸟,我只是想运行使用 Node js 开发微服务的示例代码,它说:
var seneca = require('seneca')();
seneca.add('role:api,cmd:bazinga',function(args,done){
done(null,{bar:"Bazinga!"});
});
seneca.act('role:web',{use:{
prefix: '/my-api',
pin: {role:'api',cmd:'*'},
map:{
bazinga: {GET: true}
}
}})
var express = require('express');
var app = express();
app.use( seneca.export('web') ); // <<<<<< this line might be the cause
app.listen(3000);
但我收到一条错误消息:
TypeError: app.use() 需要中间件函数 在 EventEmitter.use (/home/oem/node_modules/express/lib/application.js:209:11) 在对象。 (/home/oem/Documents/seneca/app.js:7:8) 在 Module._compile (module.js:409:26) 在 Object.Module._extensions..js (module.js:416:10) 在 Module.load (module.js:343:32) 在 Function.Module._load (module.js:300:12) 在 Function.Module.runMain (module.js:441:10) 启动时 (node.js:139:18) 在 node.js:974:3我还尝试运行从网上复制的另一个示例代码,很抱歉我只能找到链接。但我只是复制、粘贴并尝试运行,我得到了同样的错误。我认为这更像是一个设置问题?
编辑
我仍在尝试玩这个。我理解这一点的方式是在 app.use 行,基本上我只是调用 seneca-web 模块。所以我做的是
app.use(require('seneca-web'))
而不是
app.use( seneca.export('web') )
然后我运行node app.js,它运行了脚本,命令中没有错误。
但是当尝试从浏览器访问该模块时,我收到错误消息,提示找不到 util 并指向 seneca Web 文件,该文件实际上来自 seneca 的调用。现在我不知道该怎么办了
我尝试将我必须的节点版本从 6.0 降低到 4.0,但仍然出现相同的错误
【问题讨论】:
-
在第一个链接上,我也收到错误消息。指着地图关键词说,意外识别。在第二个链接上,我没有任何错误,但它并没有尝试将 seneca 作为中间件加载到 express 中
-
基本上没有在 SO 或 github 上找到的示例现在正在工作,这是可复制的。
-
天哪,一点都不酷。我现在迷失了塞内卡。嘿,谢谢下面的回答,你能推荐资源,这样我就可以真正开始使用 seneca js 了吗?
-
老实说,为了在某个时候回答这个问题,我只是停止环顾四周,转而寻找源头。例如,下面答案中的代码我从seneca-web tests 之一适应了您的情况,我认为他们仍在通过它们。此外,一旦你设置好并让你的服务器启动并运行,你应该很好地使用我认为的现有资源 - 如果没有,只需发布一个问题 :) -.