【问题标题】:Express routing returns undefined randomly快速路由随机返回未定义
【发布时间】:2013-06-04 01:39:01
【问题描述】:

我正在尝试使用 NodeJS 学习 Express,并希望使用纯 HTML 呈现我的视图。我根据 Express API 文档和几个 Stack 问题破解了一个网络服务器,特别是 Andrew Homeyer 在this 问题中的回答,其中指出

你可以让 Jade 包含一个纯 HTML 页面:

在views/index.jade中

在views/plain.html中包含plain.html

... app.js 仍然可以只渲染玉:

res.render(索引)

我的目录结构是这样的

Project
  *web.js
  Public
      img
      js
      lib
        gallerific
          *jquery.opacityrollover.js
          *jquery.gallerific.js
        angular
      theme
      views
        partials
        *index.html
        *index.jade

我的服务器看起来像这样。

var express = require('express'),
    jade = require('jade');

var app = module.exports = express();

app.configure(function(){
    app.set('views', __dirname + '/public/views');
    app.use("/public/lib", express.static(__dirname + "/public/lib"));
    app.use(express.static(__dirname + '/public'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.set('view engine', 'jade')
    app.use(express.bodyParser());
});


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

app.get('/partials/:name',  function(req, res){
    var name = req.params.name;
    res.render('/public/partials/' + name);
});

app.get('/public/data/:name',  function(req, res){

    var name = req.params.name;
    res.json('/public/data/' + name)

});

app.listen(3000, function(){
    console.log("Express app listening on port %d in %s mode", this.address().port, app.settings.env);
});

我看到的是某些文件无法从其他所有内容都正常加载的目录中加载。例如,我的图库页面无法从我的 lib/gallerific 目录加载 jquery.gallerific.js javascript 文件,而它确实加载了 jquery.opacityrollover.js。我用 Chrome 开发者工具四处逛逛,看到以下内容

我让这个网站使用 Angular Bootstrap 网络服务器,所以客户端代码似乎不是 javascript 错误。有谁知道我可能会做什么会导致这个问题?

来源地址为https://github.com/jamesamuir/express-simple-html.git

【问题讨论】:

  • 你能发布定义图像位置的 HTML/javascript 吗?
  • 请说明没有找到什么资源。
  • 尝试删除包含app.use("/public/lib", express.static(__dirname + "/public/lib"));的行。
  • 找不到的资源是。我尝试按照 veidelis 的建议删除该行,但似乎没有解决问题。
  • 我还看到我在 Chrome 开发者工具中的资源路径是 GET localhost:3000/undefined 404(未找到)。我不确定为什么在明确声明并从该位置加载其他库时它会未定义。

标签: html node.js express undefined


【解决方案1】:

我想通了。事实证明,我必须解决我忘记的路径,以便 Express 可以正确呈现它们。并不是说 Gallerific javascript 库没有加载,而是在我的画廊图像的未定义图像源上引发错误(我从 JSON 文件中提取它们)。

一旦我为图像和数据文件输入了适当的路径,一切就又开始工作了。感谢所有为我提供建议的人。它确实帮助我解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多