在Express JS中出现“无法获取/public/signup.html”错误

时间:2018-08-30 11:19:06

标签: javascript node.js express

表达和文件系统是新手,对目录没有太多了解,因此会出现此错误。

var express= require('express');
var path= require('path');
var mysql= require('mysql');
var bodyParser= require('body-parser');

var app= express();
app.get('/', function(req, res) {
res.set( {
    'Access-control-Allow-Origin': '*'
});
return res.redirect('/public/signup.html');
 }).listen(2121);

console.log('server Running on : 2121');
app.use('/public',express.static(__dirname +"/public"));

正在获取错误“无法获取/public/signup.html” 我的目录是:

-Express
--Server.js
--public
---signup.html 

3 个答案:

答案 0 :(得分:0)

在中间件上调用listen之前,您正在app上调用use,并且代码中存在一些错误。我认为这应该可行:

app
  .use('/public',express.static(`${__dirname}/public`))
  .get('/', (req, res) => {
    res.header({
      'Access-control-Allow-Origin': '*'
    });
    res.redirect(`${req.baseUrl}/public/signup.html`);
  })
  .listen(2121);

答案 1 :(得分:0)

看起来您的代码有些混乱。分离出您的端口侦听器-这应该始终排在最后。在此之前,将您的路由和中间件添加为对app的单独调用,还注册您的get请求以将其重定向回服务器到注册html。

这应该有效:

var express = require("express");
var path = require("path");

var port = 2121;
var app = express();

// Register Middlewares/Headers
app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  next();
});

// Register Static
app.use("/public", express.static(__dirname + "/public"));

// Register redirect
app.get('/', (req, res) => {
  res.redirect(req.baseUrl + '/public/signup.html');
});


app.listen(port, () => {
  console.log("server Running on : ", port);
});

答案 2 :(得分:0)

您应提供

app.use('/public',express.static(__dirname +"/public"));

在使用app.get

之前

完整示例:

var express= require('express');
var path= require('path');
var mysql= require('mysql');
var bodyParser= require('body-parser');

var app= express();
app.use('/public',express.static(__dirname +"/public"));
app.get('/', function(req, res) {
   res.set( {
       'Access-control-Allow-Origin': '*'
   });
   return res.redirect('/public/signup.html');
 }).listen(2121);

console.log('server Running on : 2121');