EJS和jquery没有加载javascript参考

时间:2012-07-14 06:14:16

标签: javascript jquery node.js ejs

这让我疯了。

我有一个带快递的节点应用程序。它提供了一个名为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>

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

当您的客户要求/javascript/jquery.js时,您的服务器将会寻找/public/javascript/javascript/jquery.js,而我怀疑它会找到它。将express.static()的路径名设置为__dirname + '/public'应该有效,假设jquery.js实际位于your_app/public/javascript