我的代码工作正常,但我希望通过将整个Javascript放在另一个文件maps.js
中来清理代码。但是maps.js
的行无法识别。使用Firebug,我尝试调试并发现此文件的GET失败!
然而,GET适用于socket.io.js
。我正在使用node.js通过localhost:8080运行系统。谁能告诉我这里做错了什么?或者HTML代码执行时实际工作目录在哪里?我甚至尝试过maps.js
的绝对路径,但没有取得任何成功。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta type="keywords" content="" />
<link href="/maps/documentation/javascript/examples/default.css" rel="stylesheet">
<title>ReSense Client</title>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript" src="/js/maps.js"></script>
<script type="text/javascript">
var socket = io.connect('http://localhost');
var stockholm = new google.maps.LatLng(59.32522, 18.07002);
var parliament = new google.maps.LatLng(59.327383, 18.06747);
var marker;
var map;
function initialize() {
var mapOptions = {
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: stockholm
};
map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
google.maps.event.addListener(marker, 'click', toggleBounce);
}
function toggleBounce() {
if (marker.getAnimation() != null) {
marker.setAnimation(null);
} else {
marker.setAnimation(google.maps.Animation.BOUNCE);
}
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width: 500px; height: 400px;">map div</div>
</body>
</html>
答案 0 :(得分:1)
我没有看到一些node.js路由,我最好的猜测是你在使用Node.js提供静态文件的方式存在问题。确保您的JS位于您作为静态目录的目录中。如果你使用快递,就像这样:
app.configure(function(){
app.use(express.static("path/to/public"));
});
并确保“public”目录无论您在哪里提供静态文件。
答案 1 :(得分:0)
问题是您可能在服务器端使用默认示例。 与PHP + Apache解决方案相比,node.js在其中是一种“apache”,默认情况下,当你直接使用它时,它不会像Apache那样服务器文件。
必须在node.js中手动编码。
您可以写下可以访问此类文件的路径。这是一篇很好的文章,看看如何提供静态文件。 http://www.sitepoint.com/serving-static-files-with-node-js/
还有另一种选择,就是使用Express.js框架,这有助于路由,并且正如Dan Crews在下面写的那样使用额外的配置来强制node.js如果没有路由被处理,则静态地提供文件显影剂。
app.configure(function(){
app.use(express.static("path/to/public"));
});
请记住,node.js不会执行您期望从其他Web平台(如nginx或apache)执行的操作。所以你必须自己照顾他们。