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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3228閲覧

synologyのNASでnode.jsの稼働ができない

Izumo1101

総合スコア49

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/03/22 06:14

編集2020/03/25 13:52

素人が独学でnode.jsの勉強をしています。基本的なことがわかりません。

synologyNAS DiskstationDS218
node.jsv8 インストール済み(特に設定はしていない)
Web Stationインストール済み(外部から自作htmlファイルを閲覧可能状態)(webフォルダが生成されこの中に通常はindex.htmlを入れている)
ローカルネットワーク内 例:192.168.1.11
外部からhttps://********.*****.*

ローカルPCで勉強をしているものの、実際に公開した状態で挙動を確かめたく上記のnasでnode.jsを動かしつつ勉強したいと思っています。そこでいったんある程度まで進んだnodeの学習(現場で通用する力を身につける Node.jsの教科書)の環境をローカルからnasに移したところでよくわからなくなりました。

ローカルPCでは、コマンドプロンプトから該当ファイルの階層に行き、nodeサーバーを起動してjsファイル名でブラウザ上にプログラムが表示されます。
node sampleapp.js

javascript

1var http = require('http'); 2 3var server = http.createServer(); 4server.on('request', doRequest); 5server.listen(1234); 6 7 8function doRequest(req, res) { 9 res.writeHead(200, {'Content-Type': 'text/plain'}); 10 res.write('Hello!'); 11 res.end();

ブラウザにて「http://localhost:1234」で「Hello!」表示。

これと同一の動きを上記nasで行いたい場合、どこになんのファイルを入れてどのように実行したらよいのでしょうか。基本がわかっていない故非常に恥ずかしい質問だと思いますが教えていただければと思います。

解決しました。
まずnode.jsアプリのv8が古いもので対応していなかったことが原因だと思います。
次にエラー構文に絞めのエラーが出ていましたので記述を見直しました。
無事表示されました。

ありがとうございました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

場所は自由ですが sample.js をてきとうな場所に保存し、この記事のこの箇所を参考に nas のタスクスケジューラに node <some dir>/sample.js を実行させれば可能です。

ただ外部からだとポートが空いている必要があるので、まずは LAN でご確認ください。


nas の問題ではなくコードがsyntax error の状態です。

javascript

1var http = require("http"); 2 3var server = http.createServer(); 4server.on("request", doRequest); 5server.listen(1234); 6 7function doRequest(req, res) { 8 res.writeHead(200, { "Content-Type": "text/plain" }); 9 res.write("Hello!"); 10 res.end(); 11}

当方の synology ds218 では node /volume1/homes/admin/sample.jshttp://192.168.0.1:1234/ にアクセスすると Hello! が表示されます。

投稿2020/03/22 15:59

編集2020/03/25 14:05
papinianus

総合スコア12705

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

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

Izumo1101

2020/03/23 01:11

ご回答ありがとうございます。 今外にいるので帰り次第試してみます。適当なフォルダにおいてタスクスケジューラでnodeを待機状態にさせる、ということですね。 ちなみに待機状態にある場合、ブラウザでこのnasにアクセス(内部LAN)すると http://192.168.1.11:1234 jsが動いて'Hello!'が表示されると考えてよいでしょうか。
Izumo1101

2020/03/24 08:45

タスクスケジュールで node <volume1/homes/administrator/>/sampleapp.js (階層はFileStationのプロパティから取得) タスクを実行 ブラウザでhttp://192.168.1.11:1234/ でもこのページを表示できません、でした。 なにか根本的に間違っているのでしょうか。
papinianus

2020/03/24 12:25 編集

/volume1/homes/administrator/sampleapp.js できないはどうなった状態ですか?
Izumo1101

2020/03/24 12:31 編集

node <volume1/homes/administrator/> sampleapp.js node  volume1/homes/administrator/sampleapp.js ユーザー指定のスクリプトの記述は様々試してみました。その後タスクを右クリックし「実行」。ブラウザでhttpIPアドレス:ポート番号(スクリプト記述内)をたたいても「このページを表示できません」状態です。 パッケージからnode.js V8を見ると実行中になっているのでNASのnodeは動いているようですが、スクリプトが動いていないように思われます。 できない、とは「ブラウザでたたいてもHello!が表示されない」、という状態です。
papinianus

2020/03/24 14:14

最初のスラッシュが必要だと思います。
Izumo1101

2020/03/24 22:10

最初のスラッシュ、<>の有無、考えられる記述ミスはほとんど試したつもりですが上記の結果でした。 本当にnodeが実行されているのか疑いたくなる雰囲気です。
Izumo1101

2020/03/25 13:23

スクリプトのoutputlogを取ってみました。 /volume1/homes/administrator/sampleapp.js:12 }); ^ SyntaxError: Unexpected token ) at createScript (vm.js:80:10) at Object.runInThisContext (vm.js:139:10) at Module._compile (module.js:607:28) at Object.Module._extensions..js (module.js:654:10) at Module.load (module.js:556:32) at tryModuleLoad (module.js:499:12) at Function.Module._load (module.js:491:3) at Function.Module.runMain (module.js:684:10) at startup (bootstrap_node.js:187:16) at bootstrap_node.js:608:3 調べようにも歯が立たなかったのですが、何かここからわかりますでしょうか。
Izumo1101

2020/03/25 13:40

nodeのバージョンが2020年2月で切れている云々を見つけ、さらにv12をインストール、エラーが変わりました。なんかしつこくてすみません。 /volume1/homes/administrator/sampleapp.js:11 res.end(); SyntaxError: Unexpected end of input at Module._compile (internal/modules/cjs/loader.js:895:18) at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10) at Module.load (internal/modules/cjs/loader.js:815:32) at Function.Module._load (internal/modules/cjs/loader.js:727:14) at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10) at internal/main/run_main_module.js:17:11
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問