0

我的代码工作正常,但我想通过将整个 Javascript 放在另一个文件(如maps.js. 但maps.js不承认与线。使用 Firebug,我尝试调试并发现该文件的 GET 失败!

但是 GET 适用于socket.io.js. 我通过 localhost:8080 使用 node.js 运行系统。谁能告诉我我在这里做错了什么?或者当 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>
4

2 回答 2

1

如果没有看到一些 node.js 路由,我最好的猜测是您在使用 Node.js 提供静态文件的方式方面存在问题。确保您的 JS 位于您用作静态目录的目录中。如果你使用快递,它是这样的:

app.configure(function(){
    app.use(express.static("path/to/public"));
});

并确保“公共”目录位于您提供静态文件的任何位置。

于 2012-12-19T20:01:15.487 回答
0

问题是您可能在服务器端使用默认示例。与 PHP + Apache 解决方案相比,node.js 本身就是一种“apache”,默认情况下,当您只有直接 url 时,它不会像 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 不会做您期望从 nginx 或 apache 等其他 Web 平台执行的操作。所以你必须自己照顾他们。

于 2012-12-20T13:15:50.147 回答