2016-04-27 71 views
0

我建立一個Express應用程序快速的NodeJS給予404錯誤

下面

是app.js

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var jsforce = require('jsforce'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 
var oauth = require('./routes/oauth'); 

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 
app.use('/oauth/auth', oauth); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

//salesforce 

/* OAuth callback from SF, pass received auth code and get access token */ 
app.get('/auth/salesforce/callback', function(req, res) { 
    var conn = new jsforce.Connection({oauth2: oauth2}); 
    var code = req.query.code; 
    conn.authorize(code, function(err, userInfo) { 
     if (err) { return console.error(err); } 

     console.log('Access Token: ' + conn.accessToken); 
     console.log('Instance URL: ' + conn.instanceUrl); 
     console.log('User ID: ' + userInfo.id); 
     console.log('Org ID: ' + userInfo.organizationId); 

     req.session.accessToken = conn.accessToken; 
     req.session.instanceUrl = conn.instanceUrl; 
     res.redirect('/accounts'); 
    }); 
}); 


app.get('/accounts', function(req, res) { 
    // if auth has not been set, redirect to index 
    if (!req.session.accessToken || !req.session.instanceUrl) { res.redirect('/'); } 

    var query = 'SELECT id, name FROM account LIMIT 10'; 
    // open connection with client's stored OAuth details 
    var conn = new jsforce.Connection({ 
     accessToken: req.session.accessToken, 
     instanceUrl: req.session.instanceUrl 
    }); 

    conn.query(query, function(err, result) { 
     if (err) { 
      console.error(err); 
      res.redirect('/'); 
     } 
     res.render('accounts', {title: "Accounts List", accounts: result.records}); 
    }); 
}); 
// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: err 
    }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
    }); 
}); 


module.exports = app; 

,這是我的路線/ oauth.js

var express = require('express'); 
var jsforce = require('jsforce'); 
var router = express.Router(); 

var oauth2 = new jsforce.OAuth2({ 
    clientId: "3MVG9ZL0ppGP5UrCvXcC3DFadDjpWkzxie8m4kCKhZ8ioGXx90ciGmuV1pW6joTi1giQNZTy.7ZvWkBvc_kmW", 
    clientSecret: "3184414314550851555", 
    redirectUri: 'http://localhost:3000/auth/salesforce/callback' 
}); 


/* SF OAuth request, redirect to SF login */ 
router.get('/oauth/auth', function(req, res) { 
    res.redirect(oauth2.getAuthorizationUrl({scope: 'api id web'})); 

}); 

module.exports = router; 

其他路線正在但是當我去http://localhost:3000/oauth/auth

這是投擲404

Not Found 

404 

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

任何人都可以幫助我解決這個錯誤。

我是新來的快遞。

在此先感謝

回答

1

哦,我能解決它。

這是一個簡單的錯誤

/* SF OAuth request, redirect to SF login */ 
router.get('/oauth/auth', function(req, res) { 
    res.redirect(oauth2.getAuthorizationUrl({scope: 'api id web'})); 

}); 

應該在app.js

被僅指 router.get('/'...

/* SF OAuth request, redirect to SF login */ 
router.get('/', function(req, res) { 
    res.redirect(oauth2.getAuthorizationUrl({scope: 'api id web'})); 

}); 

,因爲它已經在使用

app.use('/oauth/auth', oauth);