EJS和jQuery不加载JavaScript参考

这让我疯狂。

我有一个快递节点的应用程序。 它提供了一个名为index.ejs的文件。

我想要做的就是在这个页面上导入一个JavaScript文件(类似于jquery)。 但它不会拉起来,我疯了(因为这应该是简单的)。

在服务器端,我有一个名为app.js的文件中的这段代码:

var express = require('express'); var app = express.createServer(); var hostName = (process.env.VCAP_APP_HOST || 'localhost'); app.listen( process.env.VCAP_APP_PORT || 8000); app.use(express.static(__dirname + '/public/javascript/')); //Create the view app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.set('view options', { layout: false }); app.get('/', function(req, res){ res.render('index.ejs', { item : "document.write('Hello World');" }); }); 

在ejs文件中,我有这样的:

 <html> <script> <%= item %> </script> <a href="">Link</a> <script type="text/javascript" src="/javascript/jquery.js"></script> </html> 

我可以在控制台中看到脚本未加载(显示错误)。 但是对于我的生活,我无法弄清楚为什么。

您需要添加一个静态服务器来为“/”下的其他文件提供服务。 目前你的服务器只是响应发送到“/”(和视图)的请求。

app.get之前将此行添加到您的快速设置:

 // DOCUMENT_ROOT should point to the directory that contains your javascript directory. app.use(express.static(DOCUMENT_ROOT)); 

当你的客户端要求/javascript/jquery.js ,你的服务器将会寻找/public/javascript/javascript/jquery.js ,我相当怀疑它会find它。 假设jquery.js实际上位于your_app/public/javascript ,将express.static()的path名设置为__dirname + '/public'应该可行。