我是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);
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误,上面写着:
TypeError: app.use() requires middleware functions
at EventEmitter.use (/home/oem/node_modules/express/lib/application.js:209:11)
at Object. (/home/oem/Documents/seneca/app.js:7:8)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:974:3
此外,我试图运行从网络上复制的另一个示例代码,对不起,我只是可以找到链接.但我只是复制,粘贴并试图运行,我得到了同样的错误.我认为这更像是一个设置问题?
编辑
我还在尝试玩这个.我理解这一点的方式是在app.use行,基本上我只是调用seneca-web模块.所以我做的是
app.use(require('seneca-web'))
Run Code Online (Sandbox Code Playgroud)
代替
app.use( seneca.export('web') )
Run Code Online (Sandbox Code Playgroud)
然后我跑了node app.js,它运行脚本,命令没有错误.但是当试图从浏览器访问模块时,我得到错误,说找不到util,并且指向seneca web文件,实际上是来自seneca的调用.现在我不知道现在该做什么
我试图将6.0版本的节点版本降低到4.0,但仍然遇到了同样的错误
cvi*_*ejo 11
看一下主要的seneca.js文件,你会看到只transport列为默认插件(不是web):
default_plugins: {
transport: true
}
Run Code Online (Sandbox Code Playgroud)
app.use(seneca.export('web'));因此,该行传递undefined表示为中间件,因此您遇到的错误.
您必须首先明确告诉seneca您使用web快速服务器作为参数插件.试试这个:
var Seneca = require("seneca");
var Express = require("express");
var Web = require("seneca-web");
var seneca = Seneca();
var server = Express();
var config = {
routes:{
prefix : "/my-api",
pin: "role:api,cmd:*",
map:{
bazinga: {
GET: true
}
}
}
};
seneca.use(Web, { adapter: "express", context: server })
seneca.act("role:web", config);
seneca.add("role:api,cmd:bazinga", bazinga);
server.listen(3000);
function bazinga(args, done){
done(null, {
bar: "Bazinga!"
});
}
Run Code Online (Sandbox Code Playgroud)
在浏览器中调用http:// localhost:3000/my-api/bazinga会产生
{"bar":"Bazinga!"}
| 归档时间: |
|
| 查看次数: |
2552 次 |
| 最近记录: |