Не удается получить / в node.js - PullRequest
1 голос
/ 21 марта 2019

Я перехожу по этой http://www.expertphp.in/article/user-login-and-registration-using-nodejs-and-mysql-with-example ссылке

Я не могу получить GET / ошибку, и я перепробовал все ответы на 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 ]

3 голосов
/ 22 марта 2019

Насколько я понимаю, вы пытаетесь отправить 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'))

Полезные ссылки:

0 голосов
/ 22 марта 2019

У вас есть 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);

Плюсы и минусы:

1-й пример будет просто читать index.html один раз до переменная и будет обслуживать этот контент, но потребуется перезапустить приложение, чтобы перечитать этот файл.

2-В примере используется .html файлы внутри папки views в виде ejs файлов, что дает возможность передавать переменных в html-файлы, что на лучше это просто отправка файлов, + Вы можете включить один html внутри другого, используя <% include partials/header.ejs %>

...