【问题标题】:node.js+express+jade: style.css internal server error 500node.js+express+jade:style.css 内部服务器错误 500
【发布时间】:2014-01-26 08:47:46
【问题描述】:

我有一个node.js+express+jade的问题我不知道如何解决,我已经在google和stackoverflow上搜索了没有解决方案,所以我请求你帮助我:)

问题是除了style.css之外的所有作品:

Failed to load resource: the server responded with a status of 500 (Internal 
 Server Error)

P.S:我已经重新安装了最新版本的 node.js 和安全模块,没有解决方案

更新:只有当我在玉文件中添加以下内容时才会出现错误:link(rel='stylesheet', href='style.css')

app.js

var express = require("express"); 
app = express(),
routes = require('./routes');

app.configure(function(){
    app.set('port', 8080);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.urlencoded());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(__dirname + '/public'));
});

app.get("/", routes.index);

app.listen(app.get("port"), function() {
    console.log("App listening on port " + app.get("port"));
});

routes/index.js

exports.index = function(req, res) {
    res.render('index');
};

public/style.css

body {
    font-size: 20px;
}

我遇到了这个错误:

my_path_privacy\nodejs-test>node app.js
    App listening on port 8080
    ←[90mGET / ←[32m200 ←[90m3674ms - 867b←[0m
    TypeError: Object #<SendStream> has no method 'on'
        at Object.staticMiddleware [as handle] (my_path_privacy\nodejs-test\node_modules\express\node_modules\connect\lib\middleware\static.js:89:8)
        at next (my_path_privacy\nodejs-test\node_modules\express\node_modules\connect\lib\proto.js:193:15)
        at pass (my_path_privacy\nodejs-test\node_modules\express\lib\router\index.js:110:24)
        at Router._dispatch (my_path_privacy\nodejs-test\node_modules\express\lib\router\index.js:173:4)
        at Object.router [as handle] (my_path_privacy\nodejs-test\node_modules\express\lib\router\index.js:33:10)
        at next (my_path_privacy\nodejs-test\node_modules\express\node_modules\connect\lib\proto.js:193:15)
        at Object.methodOverride [as handle] (my_path_privacy\nodejs-test\node_modules\express\node_modules\connect\lib\middleware\methodOverride.js:48:5)
        at next (my_path_privacy\nodejs-test\node_modules\express\node_modules\connect\lib\proto.js:193:15)
        at Object.urlencoded [as handle] (my_path_privacy\nodejs-test\node_modules\express\node_modules\connect\lib\middleware\urlencoded.js:41:37)
        at next (my_path_privacy\nodejs-test\node_modules\express\node_modules\connect\lib\proto.js:193:15)
    ←[90mGET /style.css ←[31m500 ←[90m52ms - 1.34kb←[0m

package.json

{
   "name": "app-test",
   "version": "0.0.1",
   "private": true,
   "scripts": {
       "start": "node app.js"
   },
   "dependencies": {
      "express": "3.4.7",
      "jade": "1.1.0"
   },
   "engines": {
      "node": "0.10.24",
      "npm": "1.3.21"
  }
}

index.jade

doctype html
html
  head
    title Hello world
    link(rel='stylesheet', href='style.css')
  body
    p Hello world

【问题讨论】:

  • 听起来像this answer 或许可以解决您的问题。
  • @robertklep: 已经尝试过但无法解决,但感谢您的帮助

标签: javascript css node.js express pug


【解决方案1】:

不知道有没有关系,我在jade文件中嵌入脚本时遇到了很多麻烦。语法改变。如果下一行是 JS,你可能需要在jade文件中的脚本标签中添加一个点。

还有一个邪恶的变化,你需要写doctype html而不是doctype 5

脚本 变量 x=1 就是现在 脚本。 变量 x=1

【讨论】:

  • hmm 我在jade文件中没有脚本标签,但我正在寻找语法错误
【解决方案2】:

似乎是模板引擎的问题,只是出于好奇,你可以尝试发送一个数组或对象而不是“Hello,World”,只需替换

res.render('index', {title: "Hello, world"});

res.render('index', {title: some array or object here});

【讨论】:

  • 通常是错误的或没有引擎依赖导致这种情况,可能也想仔细检查一下(package.json)
  • 在打开的帖子上看新的更新,问题出在链接rel
猜你喜欢
  • 2022-09-23
  • 1970-01-01
  • 2019-01-17
  • 2011-10-17
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多