无法在node.js中获取/

时间:2019-03-21 19:54:53

标签: node.js express authentication get body-parser

我正在关注此http://www.expertphp.in/article/user-login-and-registration-using-nodejs-and-mysql-with-example链接

我遇到一个无法获取/错误,并且我已经尝试了所有stackoverflow答案,但仍未解决。

var express=require("express");
var bodyParser=require('body-parser');
var app = express();
var authenticateController=require('./controllers/authenticate-controller');
var registerController=require('./controllers/register-controller');
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
/* route to handle login and registration */
app.get('/', function (req, res) {
    res.render('index', {});
  });
app.post('/api/register',registerController.register);
app.post('/api/authenticate',authenticateController.authenticate);
app.listen(8012);

这是我当前的代码

2 个答案:

答案 0 :(得分:3)

据我了解,您正在尝试在路径index.html上发送/。很好,但是不要使用render。只需这样发送index.html

// replace this
app.get('/', function (req, res) {
  res.render('index', {});
});
// by this
app.get('/', (req, res) => res.sendFile('full/path/to/index.html'))

有用的链接:

答案 1 :(得分:0)

您有2种方法:

1)读取index.html的内容并将其投放到根URL:

const fs = require('fs');

const indexFileContent = fs.readFileSync('path/to/index.html'); // caching file content to variable, to avoid re-reading it
app.get('/', (req, res) => {
  res.send(indexFileContent);
});

2)也将ejs渲染器也定义为.html文件渲染器:

const path = require('path');
const bodyParser = require('body-parser');
const express = require("express");
const app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine','ejs'); // make sure You've installed ejs:  npm i --save ejs
app.engine('ejs', require('ejs').renderFile);
app.engine('html', require('ejs').renderFile); // defining html renderer engine

app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());


app.get('/', (req, res) => res.render('index'));


// API controllers
const AuthController = require('./controllers/authenticate-controller');
const RegistrationController = require('./controllers/register-controller');

// API endpoints
app.post('/api/authenticate', AuthController.authenticate);
app.post('/api/register', RegistrationController.register);

app.listen(8012);

优点:

第一阶段示例将简单地阅读 index.html 一次变量并投放该内容,但需要重新启动该应用才能重新读取该文件。

第二个示例将.html文件夹中的views个文件用作ejs文件,这为机会传递了< strong>变量到html文件,而更好只是发送文件,+您可以使用<% include partials/header.ejs %>

将一个html包含在另一个html中