为什么渲染ejs时目录会抛出404

时间:2016-05-28 02:39:25

标签: node.js http express ejs

我正在尝试创建一个只接收来自index.js文件的get请求的页面,然后显示" hello user"。我创建了一个&users; users.ejs'我的快递应用程序中的文件只是从' users.js'中呈现一个字符串。文件。我的index.ejs文件中有一个表单,它重定向到我的users目录。当我输入' /'时,索引文件很有效。在网址框中的目录,但由于某种原因,当我在第一页的表单上点击提交而不是显示' users.ejs'时,该文件会在浏览器中抛出404 not found错误。页面,任何人都可以告诉我它为什么这样做?

index.ejs



<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p><br>

    <form action='/users' method='get'> 
      Enter Name: <input type='text' name='thetext'></input><br><br>
      <input type='submit' id='checkresponse'>enter</button>
    </form>
   
    <script type = 'text/javascript' src = '/dist/jquery.js'></script>
    <script type = 'text/javascript' src = '/js/response.js'></script>
  </body>
</html>
&#13;
&#13;
&#13;

index.js

&#13;
&#13;
var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Expr-Ass' });
});

module.exports = router;
&#13;
&#13;
&#13;

users.js

&#13;
&#13;
var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/users', function(req, res, next) {
  res.render('users', {star:'Sparksiano'});
});

module.exports = router;
&#13;
&#13;
&#13;

users.ejs

&#13;
&#13;
<!DOCTYPE html>
<html>
  <head>
    <title><%= star %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1>Welcome user!</h1>
   
  </body>
</html>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

根据以下评论,你可能想尝试这样的事情:

users.js

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

/* Notice the path change */
router.get('/', function(req, res, next) {
  res.render('users', {star:'Sparksiano'});
});

module.exports = router;

听起来您可能正在安装路径以包含/ users,然后拥有路径为/ users的路径。如果您发布了其余的服务器端代码,则更容易进行故障排除。

答案 1 :(得分:0)

我将各种ejs文件放在一个文件夹中,然后指向快递路由器将该文件夹用作路径:

var app = express();

app.set('port', 6000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

然后我将它们路由到那些页面:

app.get('/', function (req, res) {
  res.render('index', {title: 'Express'});
});

app.get('/users', function (req, res) {
  res.render('users', {star:'Sparksiano'});
});

确保users.ejs页面位于同一文件夹中。