发布Express.js时出错

时间:2015-10-10 14:51:14

标签: javascript node.js express

我的联系表格有问题。我只是想用快递做一个简单的帖子。

我有以下代码:

视图/ contacto.jade

  extends layout-inside
  block content
  .main-container
  form(action='contacto', name='contacto', id='contacto', method='post')
  section.cover.fullscreen.image-bg.overlay
  .background-image-holder
  img.background-image(alt='image', src='/images/bg-6.jpg')
  |                 
  .container.v-align-transform
  .row
  .col-sm-6.col-sm-offset-3
  .feature.bordered.text-center
  h4.uppercase Contacto
  |                                 
  form.text-left
  input(type='text', name='name', placeholder='Nombre')
  |                                     
  input(type='text', name='email', placeholder='Email')
  |                                     
  input(type='text', name="telefono", placeholder='Teléfono')
  |                                     
  textarea(name="mensaje",  placeholder='mensaje')
  |                                     
  input(type='submit', value='Enviar')
  |  

路由/ index.js

  router.get('/contacto', function(req, res, next) {
  res.render('contacto', { title: 'Contacto'});
  });

当我在表格中发帖时,我收到了这个错误:

  Error: Not Found
  at /Users/dev/node/website/app.js:33:13
  at Layer.handle [as handle_request] (/Users/dev/node/website/node_modules/express/lib/router/layer.js:95:5)
  at trim_prefix (/Users/dev/node/website/node_modules/express/lib/router/index.js:312:13)
  at /Users/dev/node/website/node_modules/express/lib/router/index.js:280:7
  at Function.process_params (/Users/dev/node/website/node_modules/express/lib/router/index.js:330:12)
  at next (/Users/dev/node/website/node_modules/express/lib/router/index.js:271:10)
  at /Users/dev/node/website/node_modules/express/lib/router/index.js:618:15
  at next (/Users/dev/node/website/node_modules/express/lib/router/index.js:256:14)
  at Function.handle (/Users/dev/node/website/node_modules/express/lib/router/index.js:176:3)
  at router (/Users/dev/node/website/node_modules/express/lib/router/index.js:46:12)

你知道为什么会这样吗?看来该文件不存在。

由于

1 个答案:

答案 0 :(得分:0)

他们是不同的HTTP动词,GETPOST不同,在执行GET /contactos渲染视图时,这是正常的。点击提交后,您将尝试执行POST request

您可以添加类似的内容来处理通过POST提交的表单:

 router.post('/contacto', function(req, res, next) {
  var formData = request.body;
  // Do stuff
  return response.end(201);
 });

对于您的API,您应该使用/ api为路由添加前缀,例如:/api/contacts。此外,您应该用英语编写所有代码。

编辑。快递4配置

您应该使用Router对象设置路线,如this other post中所述。

相关问题