

client-ios.jsでエラーが起きているのですが、どこを直せばいいのかわかりません  
`<` の記号でのエラーのようですけどどこにも使ってないのでさっぱりです  
javascriptに詳しい方いらっしゃいましたらお願いいたします

エラー内容

[code]

    SyntaxError: expected expression, got '<'　　　　client.js:1
    
[/code]

<http://d.hatena.ne.jp/tomo-ono/20110530/1306740692>  
のサイトを参考に作成したのですが、解決方法が分かりません

上のURLを参考に作成したプロジェクトのソースコード

client.js

[code]

    $(function() {
    var socket = new io.Socket(null, {port: 8080});
    socket.connect();
    
    function iosHandleOrientation(event) {
        var orientData = event.accelerationIncludingGravity;
        socket.send(orientData.x + " " + orientData.y + " " + orientData.z );    
    }
    
    window.addEventListener("devicemotion", iosHandleOrientation, true);
    
    socket.on('message', function(obj) {
        data = obj.split(" ");
        $('#data').append("<tr><td>" + parseFloat(data[0]).toFixed(3) + "</td><td>" + parseFloat(data[1]).toFixed(3) + "</td><td>" + parseFloat(data[2]).toFixed(3) + "</td></tr>");
    
    });
    });
    
[/code]

server.js

[code]

    var fs = require('fs');
    var http = require('http'),
        io = require('socket.io'),
    
    server = http.createServer(function(req, res){
      fs.readFile('./socket.html','utf-8',doReard);
      function doReard(err,data){
        res.writeHead(200, {'Content-Type': 'text/html'});
      res.write(data);
        res.end();
    }
    });
    server.listen(8080);
    
    var socket = io.listen(server);
    socket.on('connection', function(client){
        client.on('message', function(message) {
            client.broadcast(message);
            console.log(message);
        });
    
        client.on('disconnect', function(){
                console.log('Conncection closed.');
        });
    });
    
[/code]

socket.html

[code]

    <!DOCTYPE html>
    <html lang="ja">
    <meta charset="utf-8">
    <head>
         <script type="text/javascript" src="https://cdn.socket.io/socket.io-   1.4.5.js"></script>
         <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
         <script src="client.js"></script>
    </head>
    <body>
    <table id="data">
    <tr><th>x</th><th>y</th><th>z</th></tr>
    </table>
    </body>
    </html>
    
[/code]

ご指摘を受けましてserver.jsとsocket.htmlのコードを書き直したのですが以下のようなエラーが出ます

TypeError: server.use is not a function

server.js

[code]

    var express = require('express');
    var http = require('http');
      io = require('socket.io');
    var server = express();
    
    server = http.createServer(function(req, res){
    
      server.use(express.static(__dirname+'/public'));
      //fs.readFile('./socket.html','utf-8',doReard);
      function doReard(err,data){
        res.writeHead(200, {'Content-Type': 'text/html'});
      res.write(data);
        res.end();
      }
    });
     server.listen(8080);
    
    var socket = io.listen(server);
    socket.on('connection', function(client){
        client.on('message', function(message) {
            client.broadcast(message);
            console.log(message);
        });
    
        client.on('disconnect', function(){
                console.log('Conncection closed.');
        });
    });
    
[/code]

socket.html

[code]

    <!DOCTYPE html>
    <html lang="ja">
    <meta charset="utf-8">
    <head>
        <script type="text/javascript" src="https://cdn.socket.io/socket.io-  1.4.5.js"></script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
        <script type="text/javascript" src="http://localhost:8080/images/client.js"></script>
    </head>
    <body>
    <table id="data">
    <tr><th>x</th><th>y</th><th>z</th></tr>
    </table>
    </body>
    </html>
    
[/code]

何度も申し訳ありませんが詳しい方いらっしゃいましたらよろしくお願いいたします


CC BY-SA 3.0
2017-12-06T11:59:38.160
40093
2017-12-20T10:06:43.107
2017-12-20T10:06:43.107
26483
26483
question
javascript html node.js iphone socket.io
javascriptのエラー内容が分かりません


本家英語サイトに同様のエラーと、その解決方法がありました。  
<https://stackoverflow.com/questions/31926326/syntaxerror-expected-expression-
got-what-does-that-mean>

これに合致していませんか？

> You don't need the tags when in an external .js file. Use these tags to
> embed a script inside HTML only.

と回答にあるので、日本語で言うと  
「外部JSファイルにはタグは必要ありません。タグが必要なのはHTML内にスクリプトを埋め込む時だけです。」

ということです。


CC BY-SA 3.0
2017-12-07T03:16:12.633
40102
2017-12-07T03:16:12.633
17014
40093
answer


(この回答はもともと[重複先の質問](https://ja.stackoverflow.com/q/40263/20206)に投稿したものですが、重複としてクローズされたためこちらにも投稿しました)

* * *

`server.js`でリクエストのパスにかかわらず`socket.html`を返しているからではないでしょうか。

ブラウザは`<script
src="client.js"></script>`というタグを見てサーバーに`/client.js`をリクエストしますが、返ってくるのはhtmlなのでそのようなエラーが出たのだと思います。

[Express](http://expressjs.com/) などを使うとルーティングが楽にできます。

関連リソース  
[Express で静的ファイル（static
ファイル）をホスティングする](https://maku77.github.io/nodejs/express/static-file.html)


CC BY-SA 3.0
2017-12-15T07:03:14.030
40301
2017-12-15T07:03:14.030
20206
40093
answer