静态javascript未在jade中呈现(使用express/node.js)

静态javascript未在jade中呈现(使用express/node.js),node.js,express,pug,Node.js,Express,Pug,我希望你身体好 我突然无法在jade模板中呈现任何外部javascript!为了弄清事情的真相,我把它精简到最低限度: 节点0.6.11,Express 2.5.8,jade 0.20.3 app.js var express = require('express') , routes = require('./routes'); var app = module.exports = express.createServer(); app.configure(function(){ ap

我希望你身体好

我突然无法在jade模板中呈现任何外部javascript!为了弄清事情的真相,我把它精简到最低限度:

节点0.6.11,Express 2.5.8,jade 0.20.3

app.js

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

var app = module.exports = express.createServer();

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

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

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

app.listen(3000);
杰德

!!!
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    script(type='text/javascript', src='/javascripts/script.js')
  body!= body
script.js

alert('hello!');
在我看来,当我运行服务器并加载时,我应该立即得到一个“hello!”消息,但它只是直接运行到正常页面。 此外,如果我手动键入

script
  alert('hello!')
在layout.jade模板中,我得到了我应该得到的信息。它只是不加载静态脚本。我当然已经检查了“script.js”是否在“/public/javascripts/”中。 欢迎任何建议


提前感谢

您需要像这样从控制器传递脚本:

app.get('/', function(req, res){
  res.render('index', { title: 'Express', scripts: ['javascripts/script.js']});
});
然后在layout.jade中你的脑海中:

- each s in scripts
    script(src=s)

为什么您的Jade脚本标记中有一个正斜杠“/”开头?使用
/public/javascripts/script.js
中的脚本,在Jade中引用它的正确方法是
script(src=“javascripts/script.js”)
。至少这是我的安装工作。对于其他资产(如/public目录中的CSS或图像)也是如此。

确保js文件作为静态资源公开

在布局中。翡翠

!!!5
html
   head
      script(src='js/helper.js')
在app.js中

app.use(express.static(__dirname + '/public'));
一旦我把“js”文件夹放在“public”文件夹下,helper.js就会毫无问题地加载。很简单,但我对这整件事还不熟悉,一开始我并没有理解。

感谢Rob(你可以在上面找到他的答案),他指出了正确的方向。我只想添加一点参考,这样看起来比任何魔法都更自然

在express文档中提到,如果要提供css、图像等静态文件,则需要使用


app.use(express.static(“_dirName”)
如果您使用Firebug或Chrome的inspector,在加载JS文件时会看到任何错误吗?@loganfsmyth谢谢您的评论!在firebug中列出了地址,但我无法点击查看文档。没有错误…如果你只是在浏览器中键入URL,你能看到脚本吗?另外,当您说它们已列出时,您的意思是您可以看到脚本标记?您也应该能够在那里看到网络请求。也许你已经检查过了,但是每次我遇到这个问题都是因为缩进。确保有2个空格而不是选项卡。除此之外,我同意您应该查看HTML中写入的内容以获得一些线索。