Node.js 节点js Rest API不工作-Plesk托管服务器

Node.js 节点js Rest API不工作-Plesk托管服务器,node.js,plesk,Node.js,Plesk,节点js Rest API在prod服务器中不工作。它在当地运行良好 server.js var app = require('./app'); var http = require('http'); var port = normalizePort(process.env.PORT || '3000'); app.set('port', port); var server = http.createServer(app); server.listen(port); server.on('err

节点js Rest API在prod服务器中不工作。它在当地运行良好

server.js

var app = require('./app');
var http = require('http');
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
var server = http.createServer(app);
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
function normalizePort(val) {
    var port = parseInt(val, 10);
    if (isNaN(port)) {
        return val;
    }
    if (port >= 0) {
        return port;
    }
    return false;
}
function onError(error) {
    if (error.syscall !== 'listen') {
        throw error;
    }
    var bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port;
    switch (error.code) {
        case 'EACCES':
            console.error(bind + ' requires elevated privileges');
            process.exit(1);
            break;
        case 'EADDRINUSE':
            console.error(bind + ' is already in use');
            process.exit(1);
            break;
        default:
            throw error;
    }
}
function onListening() {
    var addr = server.address();
    var bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port;
    console.log('Listening on ' + bind);
}
app.js

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json())
var cors = require('cors');
app.use(cors());
const db = require('./app/config/db.config.js');
const Role = db.role;



const auth = require('./app/router/auth.routes');
app.get('/', (req, res) => { res.send('Hey app.js!') });
app.use('/api/auth',auth);

module.exports = app;
auth.routes.js

const router = require("express").Router();
const verifySignUp = require('./verifySignUp');
const authJwt = require('./verifyJwtToken');
const controller = require('../controller/auth.controller');

router.get('/', (req, res) => { res.send('Hey this auth.routes.js!') });
router.post('/signup', [verifySignUp.checkDuplicateUserNameOrEmail], controller.signup);
router.post('/signin', controller.signin);

module.exports = router;
auth.controller.js

const db = require('../config/db.config.js');
const config = require('../config/config.js');
const User = db.user;
const Role = db.role;

const Op = db.Sequelize.Op;

var jwt = require('jsonwebtoken');
var bcrypt = require('bcryptjs');

exports.signup = (req, res) => {
    // Save User to Database
    console.log("Processing func -> SignUp");

    User.create({
        firstName: req.body.firstName,
        lastName: req.body.lastName,
        userName: req.body.userName,
        email: req.body.email,
        passWord: bcrypt.hashSync(req.body.passWord, 8),
        phone: req.body.phone
    }).then(user => {
        Role.findAll({
            where: {
                name: {
                    [Op.or]: req.body.roles
                }
            }
        }).then(roles => {
            user.setRoles(roles).then(() => {
                res.send({ data: "User registered successfully!" });
            });
        }).catch(err => {
            res.status(500).send("Error -> " + err);
        });
    }).catch(err => {
        res.status(500).send("Fail! Error -> " + err);
    })
}

exports.signin = (req, res) => {
    console.log("Sign-In");

    User.findOne({
        where: {
            userName: req.body.userName
        }
    }).then(user => {
        if (!user) {
            return res.status(404).send('User Not Found.');
        }

        var passwordIsValid = bcrypt.compareSync(req.body.passWord, user.passWord);
        if (!passwordIsValid) {
            return res.status(401).send({ auth: false, accessToken: null, reason: "Invalid Password!" });
        }

        var token = jwt.sign({ id: user.id }, config.secret, {
            expiresIn: 86400 // expires in 24 hours
        });
        var authoritie = [];
        user.getRoles().then(roles => {
            for (let i = 0; i < roles.length; i++) {
                authoritie.push(roles[i].name.toUpperCase())
            }
            res.status(200).send({
                auth: true,
                accessToken: token,
                userId: user.id,
                userName: user.userName,
                authorities: authoritie
            });
        }
        )


    }).catch(err => {
        res.status(500).send('Error -> ' + err);
    });
}
Get:*********.xyz/正在本地和产品服务器中工作

get:******.xyz/api/auth/正在本地和产品服务器中工作

Post:*********.xyz/api/auth/signin在本地工作,但在prod server中不工作。所有post和put方法在prod server中不起作用,但在本地工作正常

在您的注册帖子请求中,您正在使用中间件作为数组,请删除第三个括号,然后重试

你的注册路线应该是

router.post('/signup', verifySignUp.checkDuplicateUserNameOrEmail, controller.signup);

如果您正在观看Maximillian课程,您可以重新检查应用程序模块的路径

var app = require('./app');
我想应该是这样

var app = require('./backend/app');

不知道,如果你已经有了答案,但我也有同样的问题

修复方法是设置网站和域->托管设置->首选域

它被设置为www.domain.xy

我将不带www的domain.xy设置为首选

问题是,nginx使用重定向301将请求从domain.xy重定向到www.domain.xy。然后POST成为GET请求


更改后,重定向不再执行,我收到了POST请求。

请共享verifySignUp.CheckDuplicateUserName或邮件中间件代码.router.POST'/signin',controller.signin;-在这个方法中,我没有使用任何中间件,而且这个方法也不起作用。你能分享controller.sign的代码吗?