質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

Q&A

解決済

1回答

685閲覧

node.jsとsocket.ioについて

退会済みユーザー

退会済みユーザー

総合スコア0

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

0グッド

1クリップ

投稿2017/11/14 08:04

編集2017/11/14 08:22

dot.installでsocket.ioについての勉強をしているのですが、
サーバーに接続する際に、下記のようなエラーが出ます。

/home/vagrant/socket.io/node_modules/socket.io/node_modules/engine.io/node_modules/uws/uws.js:3 const http = require('http'); ^^^^^ SyntaxError: Use of const in strict mode. at Module._compile (module.js:439:25) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at Server.init (/home/vagrant/socket.io/node_modules/socket.io/node_modules/engine.io/lib/server.js:115:16) at new Server (/home/vagrant/socket.io/node_modules/socket.io/node_modules/engine.io/lib/server.js:65:8) at Function.attach (/home/vagrant/socket.io/node_modules/socket.io/node_modules/engine.io/lib/engine.io.js:123:16) at Server.initEngine (/home/vagrant/socket.io/node_modules/socket.io/lib/index.js:274:21)

調べるとnode.jsのバージョン(v0.10.48)が古くsocket.ioに対応していないために起こるエラーであるとのことでしたのでUpdateしようとしたのですが、インストールをし直しても、npmから更新をかけても、バージョンが0.10.48から更新されません。
心当り等ありましたら教えていただけませんでしょうか?

追記いたします:
OS : MacOS
npm : v 5.5.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2017/11/14 08:15

OS環境は何でしょうか。
退会済みユーザー

退会済みユーザー

2017/11/14 08:21

MacOSです。
maisumakun

2017/11/14 08:23

vagrantの中身もmacOSでしょうか?
退会済みユーザー

退会済みユーザー

2017/11/14 08:24

vagrant は MyCentOSになります。
miyabi-sun

2017/11/14 08:25

CentOSと決め打ちした解答を下に用意しました、当たってましたね!(ドヤァ
miyabi-sun

2017/11/14 08:44

失礼しました、ちゃんとした解答になってなかったので足しました。追記部分のOSとnpmが息してないので、vagrant内のCentOSの情報6.5あたり?とNode.js0.11、npmもバージョン1系くらいだと思うのでそれに差し替えをお願いします!
guest

回答1

0

ベストアンサー

Bash

/home/vagrant/socket.io/node_modules/socket.io/node_modules/engine.io/node_modules/uws/uws.js:3
const http = require('http');
^^^^^
SyntaxError: Use of const in strict mode.

Vagrant + VirtualBoxで立ち上げた仮想マシン内のCentOSですね? 例えばMacでHomebrew等を利用してNode.jsを導入しても、 仮想マシンとは違う環境になってしまうので、Node.jsの環境は共有されません。 --- > 調べるとnode.jsのバージョン(v0.10.48)が古くsocket.ioに対応していないために起こるエラーであるとのことでした おっしゃる通りNode.jsのバージョンが古い事が原因です。 エラーメッセージを読む限りだと… エラーが出ているのはsocket.ioライブラリの中で発生しています。 `node_modules/socket.io/node_modules/engine.io/node_modules/uws/uws.js` 具体的な原因はuws.jsファイルの3行目、`const`を使って変数宣言していますが、 Node.jsのバージョンが古すぎてまだ未対応の書式と言っています。 つまり、そもそもNode.jsがコードの解析を諦めてエラーを出しているので実行すらしていません。 --- > インストールをし直しても、npmから更新をかけても、バージョンが0.10.48から更新されません。 CentOSが採用しているパッケージ管理ソフト、yumはソフトのバージョンを枯れた状態に保つ事を好みます。 なのでyumのパッケージで単純にアップデートを繰り返しても、Node.jsパッケージが更新される事はありません。 ですので、質問文の状況に陥ってしまい、いくらyumをアップデートしても古いバージョンのNode.jsしかインストールされなかったわけですね。 まずは古いNode.jsは下記の記事を参考にアンインストールしましょう。 [CentOS 6.xにLTS(4.3.0)のnode.jsをインストールする](https://qiita.com/zaburo/items/a69ab94f707454a5bbe7) おっと、インストールはまだしないでください。 [Node.jsの公式サイトのダウンロード](https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora)で、最新バージョンのNode.jsのインストール方法が紹介されています。 --- おまけ 私は[nodebrew](https://qiita.com/kentana20/items/05f1a4af9812398863fa)というNode.jsのバージョン管理ツールを利用しています。 ちょっと初期導入に癖がありますが、バージョンにすぐ追従出来るので便利に活用しています。 NVMといったパッケージ管理ツールもありますので、色々調べてみてください。

投稿2017/11/14 08:24

編集2017/11/14 08:54
miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi-sun

2017/11/14 08:44 編集

あ、ちょっとずれているので解答修正します。 しばしお待ちを。。。→修正しました。
退会済みユーザー

退会済みユーザー

2017/11/14 08:52 編集

ご回答ありがとうございます。 constをvarに書き換えて見ましたが、やはり同じエラーが他行で出てしまいました。 そこで一度アンインストールしようと思うのですが、ターミナル [ npm root -g ]でnode.jsのディレクトリを特定したあと、どのようにしてアンインストールすればいいのでしょうか? 度々申し訳ありません。 追記:申し訳ありません、npm root -gコマンドはこの件とは無関係でした。
miyabi-sun

2017/11/14 08:55

回答文をアップデートしました。 お手数ですがもう一度読んで下さい、多分これでいけると思います。
退会済みユーザー

退会済みユーザー

2017/11/14 09:41

ご回答ありがとうございます。 無事サーバーに接続できました。またnode.jsとsocket.ioを使用するのに必要な知識を、頂いたご回答から多く得ることができました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問