Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EJS和jquery未加载javascript引用_Javascript_Jquery_Node.js_Ejs - Fatal编程技术网

EJS和jquery未加载javascript引用

EJS和jquery未加载javascript引用,javascript,jquery,node.js,ejs,Javascript,Jquery,Node.js,Ejs,这快把我逼疯了 我有一个带有express的节点应用程序。它提供一个名为index.ejs的文件 我只想在这个页面上导入一个javascript文件(类似于jquery)。但是它拉不起来,我快发疯了(因为这应该很简单) 在服务器端,我在一个名为app.js的文件中有以下代码: var express = require('express'); var app = express.createServer(); var hostName = (process.env.VCAP_APP_HOST |

这快把我逼疯了

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


我可以在控制台中看到脚本没有加载(它显示了一个错误)。但就我个人而言,我不明白为什么。

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

应用程序之前将此行添加到express设置。获取

// 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
,我怀疑它是否能找到它。将
express.static()
的路径名设置为
\uu dirname+'/public'
应该可以工作,假设
jquery.js
实际位于
您的应用程序/public/javascript
中,它显示了什么错误?如果您查看源代码,HTML会是什么样子?GET 404(未找到),查看源代码几乎可以向您展示您的期望。它显示了我的脚本和很多。我刚刚意识到我搞错了标题。Gahh,现在已经太晚了。我想这是因为客户端没有得到javascript页面,这就是为什么它是404。但我以前也曾以这种方式引用过脚本。为什么现在会很疯狂?你确定你的静态服务器指向了正确的目录吗?你能用你当前的代码和一些目录结构信息更新这个问题吗?你的静态文件服务器指向
\uu dirname+'/public/javascript/'
,你的HTML希望服务器位于
/
,因为它请求
/javascript/jquery.js
。要么将HTML改为指向
/jquery.js
,要么将静态文件服务器改为
\uu dirname+'/public/'
。很好!!!就这样!这让我感觉更棒了,因为我已经在几分钟内跳上飞机,在接下来的一个晚上失去了互联网。非常感谢。不客气。一路平安,睡个好觉。看起来这是你应得的:-)