Javascript Nodejs post未访问文件所在的目录

Javascript Nodejs post未访问文件所在的目录,javascript,node.js,Javascript,Node.js,我来自php背景,现在正在学习Nodejs。几个小时以来,我一直试图将电子邮件和短信从dashboard.html发送到服务器端user.js,但出现了错误 Cannot POST /email Cannot POST /sms 短信和电子邮件表单post似乎无法找到文件user.js /** * Module dependencies. */ var express = require('express') , routes = require('./routes') , user

我来自php背景,现在正在学习Nodejs。几个小时以来,我一直试图将电子邮件短信dashboard.html发送到服务器端user.js,但出现了错误

 Cannot POST /email
Cannot POST /sms

短信和电子邮件表单post似乎无法找到文件user.js

/**
* Module dependencies.
*/
var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path');
//var methodOverride = require('method-override');
var session = require('express-session');
var app = express();


var mysql      = require('mysql');

var cookieParser = require('cookie-parser');
var bodyParser=require("body-parser");
var connection = mysql.createConnection({
              host     : 'localhost',
              user     : 'root',
              password : '',
              database : 'nodejs'
            });

connection.connect();

global.db = connection;

// all environments
app.set('port', process.env.PORT || 8080);

app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');



app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'public')));

app.use(session({
key: 'user_sid',
              secret: 'keyboard catgg4443378tf',
              resave: false,
              saveUninitialized: true,
              cookie: { maxAge: 60000 }
            }));



// ensure to pass session variable from page to page
app.use(function(req, res, next){
    res.locals.session = req.session;
    next();
});


// development only

app.get('/', routes.index);//call for main index page


app.get('/login', routes.index);//call for login page
app.post('/login', user.login);//call for login post


app.get('/signup', user.signup);//call for signup page
app.post('/signup', user.signup);//call for signup post 


app.get('/home/dashboard', user.dashboard);//call for dashboard page after login

app.get('/home/logout', user.logout);//call for logout
app.get('/home/profile',user.profile);//to render users profile

app.get('/email', user.email);//call for email page

app.get('/sms', user.sms);//call for email page

//Middleware
app.listen(8080)
下面是目录结构

短信息和电子邮件表单都在dashboard.html中

这里是dashboard.html文件

                            <form role="form" method="post" action="/email">


                                <div class="form-group">
                                    <label for="subject" class="col-md-3 control-label">Subject</label>
                                    <div class="col-md-9">
                                        <input type="text" class="form-control" name="subject" placeholder="Email Subject">
                                    </div>
                                </div>
                                <div class="form-group">
                                    <label for="message" class="col-md-3 control-label">Message</label>
                                    <div class="col-md-9">
                                        <input type="text" class="form-control" name="message" placeholder="Message">
                                    </div>
                                </div>




                                <div class="form-group">
                                    <!-- Button -->                                       
                                    <div class="col-md-offset-3 col-md-9">
                                        <button id="btn-email" type="submit" class="btn btn-info">
<i class="icon-hand-right"></i> &nbsp Submit Email</button>

                                    </div>
                                </div>




                            </form>





                            <form role="form" method="post" action="/sms">


                                <div class="form-group">
                                    <label for="subject" class="col-md-3 control-label">Sms message</label>
                                    <div class="col-md-9">
                                        <input type="text" class="form-control" name="sms_m" placeholder="sms message">
                                    </div>
                                </div>



                                <div class="form-group">
                                    <!-- Button -->                                       
                                    <div class="col-md-offset-3 col-md-9">
                                        <button id="btn-sms" type="submit" class="btn btn-info">
<i class="icon-hand-right"></i> &nbsp Submit sms</button>

                                    </div>
                                </div>




                            </form>
exports.email = function(req, res){

 if(req.method == "POST"){
      var post  = req.body;
      var title= post.subject;
      var mess= post.message;


console.log(title);
console.log(mess);

}



}


exports.sms = function(req, res){

 if(req.method == "POST"){
      var post  = req.body;
      var sms_message= post.sms_m;



console.log(sms_message);


}



}
这里是app.js

/**
* Module dependencies.
*/
var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path');
//var methodOverride = require('method-override');
var session = require('express-session');
var app = express();


var mysql      = require('mysql');

var cookieParser = require('cookie-parser');
var bodyParser=require("body-parser");
var connection = mysql.createConnection({
              host     : 'localhost',
              user     : 'root',
              password : '',
              database : 'nodejs'
            });

connection.connect();

global.db = connection;

// all environments
app.set('port', process.env.PORT || 8080);

app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');



app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'public')));

app.use(session({
key: 'user_sid',
              secret: 'keyboard catgg4443378tf',
              resave: false,
              saveUninitialized: true,
              cookie: { maxAge: 60000 }
            }));



// ensure to pass session variable from page to page
app.use(function(req, res, next){
    res.locals.session = req.session;
    next();
});


// development only

app.get('/', routes.index);//call for main index page


app.get('/login', routes.index);//call for login page
app.post('/login', user.login);//call for login post


app.get('/signup', user.signup);//call for signup page
app.post('/signup', user.signup);//call for signup post 


app.get('/home/dashboard', user.dashboard);//call for dashboard page after login

app.get('/home/logout', user.logout);//call for logout
app.get('/home/profile',user.profile);//to render users profile

app.get('/email', user.email);//call for email page

app.get('/sms', user.sms);//call for email page

//Middleware
app.listen(8080)

转换
/routes/users.js
文件以正确生成和导出路由:

const express = require('express');

const router = express.Router();

router.post('/email', function(req, res){
    var post  = req.body;
    var title= post.subject;
    var mess= post.message;

    console.log(title);
    console.log(mess);

    ...
    // do your logic
    ...

    res.json(response); // being response the info you want to return, commonly an object    
});


router.post('/sms', function(req, res){
    var post  = req.body;
    var sms_message= post.sms_m;

    ...
    // do your logic
    ...

    res.json(response); // being response the info you want to return, commonly an object    
}

module.exports = router;
然后,您可以在执行以下操作时导入它们:

  var user = require('./routes/user');
  ...
  //And you will use them thus:
  app.use('/', user);

“短信和电子邮件表单post似乎无法找到user.js文件”-如果这是问题所在,那么当您试图请求该文件时,程序将抛出异常。您需要提供一个。我的代码没有任何错误。问题在于将电子邮件或sms表单从位于view目录内的dasboard.html发布到位于route目录内的user.js。表单上写着Cannot POST/email Cannot POST/sm我的意思是,既然没有出现错误,问题不在于找不到文件。您仍然需要提供一个。如果你不向我们展示如何将函数连接到服务器上,那么向我们展示你是如何创建几个可以用作路由的函数是不好的。这涉及到etcI在屏幕截图上显示的路由