javascript 括弧の使い方がわからない。ターミナル上でのエラー「SyntaxError: Unexpected」どこが記述ミスなのか分からない
受付中
回答 6
投稿
- 評価
- クリップ 0
- VIEW 3,579
前提・実現したいこと
nodeとsocketでチャットシステムを作りたいと思っています。
括弧の記述ミスがあると思われるのですが、
どこに、どういう括弧を記述すればいいのか、
ミスがあるのか、わかりません。経験不足です。
chat.js:25というエラー内容から、
chat.jsの25行目で括弧がなかったり
括弧が余分に多かったりするんじゃないかなと思うのですが・・・
わかりやすく説明できずに申し訳ありません。
発生している問題・エラーメッセージ
このコードで、ターミナル上で ndoe chat.js と実行すると以下のようなエラーが発生します。
/Desktop/javascript_sample/チャットチャレンジ/chat.js:25
});
^
SyntaxError: Unexpected token )
t exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:373:25)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3
該当のソースコード
chatt.js
var http = require('http');
var fs = require('fs');
var server = http.createServer();
server.on('request', doRequest);
server.listen(1234);
console.log('Server running!');
// リクエストの処理
function doRequest(req, res) {
fs.readFile('./chat.html', 'UTF-8',
function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
io.socket.on('connection' , function(socket){
socket.emit('greeting' , {message: 'hello'}, function (data){
consle.log('result;' + data);
});
});
chat.html
<html>
<hrad>
<title>チャットする</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script src="/javascript/chat.js"></script>
<script></script>
</html>
試したこと
nodeのソースコードを見て
括弧の記述方法のルールを探して
}
});
を書いたり消したりした。
補足情報(言語/FW/ツール等のバージョンなど
テキストエディタはAtomを使っています。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
25行目の下に中括弧を閉じ忘れています。
初心者のうちはAtomよりお金払ってでもWebStormなどのIDEを使ったほうがいいと個人的には思います。
括弧を自動補完してくれたり、Syntaxエラーになるところに赤線が引かれたりするので便利です。
(Atomでもプラグインを入れれば結構いい環境作れると思いますが、そのプラグインを入れる作業が敷居が高いと思います)
https://www.jetbrains.com/webstorm/
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
chatt.jsの最後の
});
を
}
にするのはどうでしょうか。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
関係ないかもしれませんが。
// consle.log('result;' + data);
// ↓
console.log('result;' + data);
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
最後に「}」が足りてないように見えますが・・・
var http = require('http');
var fs = require('fs');
var server = http.createServer();
server.on('request', doRequest);
server.listen(1234);
console.log('Server running!');
// リクエストの処理
function doRequest(req, res) {
fs.readFile('./chat.html', 'UTF-8', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
io.socket.on('connection' , function(socket){
socket.emit('greeting' , {message: 'hello'}, function (data){
consle.log('result;' + data);
});
});
} // ここに「}」が足りてない
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
function doRequest
の波括弧の閉じがありませんね。res.end();
の2行下に}
を加えると動くかと思います。
JavaScriptでは、括弧の開きと閉じはかならずペアで存在します。ですから、ソースコードを書く時は先頭から順に打つのではなく、function hoge(){}
というふうに先に閉じ括弧まで書いてしまってから中身を書く、そして括弧の階層ごとにインデント(行の左端のTabやスペース)を揃える、ということを意識すると、括弧の対応が崩れにくくなるかと思います。
Atomには、対応する括弧を表示する機能があります。開き括弧または閉じ括弧にカーソルを合わせると、Atomが対応すると判断した括弧に下線を表示してくれますから、それらも意識しながらコーディングをすると良いかもしれません。
ご参考になれば幸いです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
まずはインデントを揃えるようにしましょう。
きれいに揃っていれば、括弧との対応がわかりやすくなります。
また、対応する括弧をハイライトしてくれるプラグインを活用するなど
コーディングミスの出にくい環境を作ることも重要かと思います。
Atomエディタだとbracket-matcherなどがあるようです。
↓インデントを整えてみました。
function doRequest(req, res) {
に対応する閉じ括弧がないことがわかります。
// リクエストの処理
function doRequest(req, res) {
fs.readFile('./chat.html', 'UTF-8', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
io.socket.on('connection', function(socket){
socket.emit('greeting', {message: 'hello'}, function (data){
consle.log('result;' + data);
});
});
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.37%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる