pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。
サーバサイドjavascriptについて語りましょう。
node.js - googleが開発したV8エンジン上で実行できる処理系
http://nodejs.org/
ayo.js - node.js 互換で Rod の影響からの脱却を目指す処理系
https://github.com/ayojs/ayo
Nashorn - Java8 からRhinoに代わって同梱されているJavaScriptエンジン
http://www.oracle.com/webfolder/technetwork/jp/javamagazine/Java-JA17-Nashorn.pdf
ayo.js の経緯
https://web.archive.org/web/20170821212745/https://github.com/nodejs/TSC/issues/310
javascriptはrubyと比較してもかなり速い
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=yarv
基礎から学ぶNode.js
http://gihyo.jp/dev/serial/01/nodejs
node.jsの概要とアプリケーション開発の準備
http://gihyo.jp/dev/serial/01/realtimeweb/0002
前スレ
【node.js】サーバサイドjavascript 4【io.js】
http://mevius.5ch.net/test/read.cgi/tech/1460359714/
【node.js】サーバサイドjavascript 3【io.js】
http://echo.2ch.net/test/read.cgi/tech/1419673207/
【node.js】サーバサイドjavascript 2【Rhino】
http://peace.2ch.net/test/read.cgi/tech/1358937029/
【node.js】サーバサイドjavascript【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1310087535/
探検
【node.js】サーバサイドjavascript 5【Nashorn】
1デフォルトの名無しさん
2018/02/13(火) 22:21:33.91ID:moEhrPrC493デフォルトの名無しさん
2020/08/20(木) 20:49:28.75ID:AoU9HO21 await付け忘れるヤツが悪い
TypeScriptで型チェックしとけ
TypeScriptで型チェックしとけ
494デフォルトの名無しさん
2020/08/20(木) 21:17:24.78ID:t5R+TL7j495デフォルトの名無しさん
2020/08/20(木) 22:05:57.37ID:wmqy4S/J まぁそこは同期が基本から非同期が基本に頭切り替えないとね
496デフォルトの名無しさん
2020/08/20(木) 22:43:19.84ID:tyNv301J >>491
nodeに限らずJSは基本シングルスレッド
JSで本格的にコード書くなら
シングルスレッドでどうやって非同期や並行処理を実現してるのかを
最低限の知識として知っておく必要がある
setTimeout(fn, 0)で渡したfnがどのタイミングで実行されるのかと同じ
少し詳しめのチュートリアルならだいだい解説してある
nodeに限らずJSは基本シングルスレッド
JSで本格的にコード書くなら
シングルスレッドでどうやって非同期や並行処理を実現してるのかを
最低限の知識として知っておく必要がある
setTimeout(fn, 0)で渡したfnがどのタイミングで実行されるのかと同じ
少し詳しめのチュートリアルならだいだい解説してある
497デフォルトの名無しさん
2020/08/21(金) 00:43:07.71ID:CMx879FZ とは言え今ではスレッドも使えるから上手く利用したいところ。
シングルスレッドにこだわってコールバックの中で時間のかかる処理しちゃったら本末転倒。
シングルスレッドにこだわってコールバックの中で時間のかかる処理しちゃったら本末転倒。
498デフォルトの名無しさん
2020/08/21(金) 01:18:26.76ID:RmDQK783 プロセスも使えるぞ。
せっかくだからV8 isolateも使いたいけどどうやるんだっけ…
せっかくだからV8 isolateも使いたいけどどうやるんだっけ…
499デフォルトの名無しさん
2020/08/21(金) 01:47:45.18ID:fPne1yUC workerが別スレッドのisolate
500デフォルトの名無しさん
2020/09/01(火) 20:38:22.47ID:QR4OvP6I nodeはバッチ処理にはマジで向いてないよな
ループ中に非同期発生すると
ループ番号の順序性があべこべになるとか
ヤバすぎる
ループ外グローバル変数への
数値溜め込み処理とかどうなるんだこれ
あと完了したと思ってた処理が
完了表示されただけで
実はまだ非同期で動作してたとかありそうで
怖すぎる
ループ中に非同期発生すると
ループ番号の順序性があべこべになるとか
ヤバすぎる
ループ外グローバル変数への
数値溜め込み処理とかどうなるんだこれ
あと完了したと思ってた処理が
完了表示されただけで
実はまだ非同期で動作してたとかありそうで
怖すぎる
501デフォルトの名無しさん
2020/09/01(火) 20:42:12.06ID:I2eVqLbl 無能w
502デフォルトの名無しさん
2020/09/01(火) 20:43:25.87ID:tH3NhyKR >>500
アホ過ぎるwww
アホ過ぎるwww
503デフォルトの名無しさん
2020/09/01(火) 20:58:34.78ID:z4ASdXsC >ループ中に非同期発生すると
まるで自然現象とか天災みたいな言い方
まるで自然現象とか天災みたいな言い方
504デフォルトの名無しさん
2020/09/01(火) 21:12:04.15ID:QR4OvP6I すまん、俺は無能なんだわ
バッチ処理は終わるまで時間がかかるから
プログレスバーとして
進捗報告として
データベースの進捗状況テーブルへ
進行度をアップデートしてんだわ
毎ループ進捗報告しなくていいから
%で余り算して定期的に
進捗をアップデートしてんだわ
ところがその進捗報告DBアクセスで
非同期が発生してループの順序が乱れる
進捗状況の進行度が進んだり戻ったり
トリッキーに変動するんだわ
でもループの最後まで到達して完了すると
全てのデータ整合してんだわw
なぜ中間状態だけこんなにトリッキーなのか謎
バッチ処理は終わるまで時間がかかるから
プログレスバーとして
進捗報告として
データベースの進捗状況テーブルへ
進行度をアップデートしてんだわ
毎ループ進捗報告しなくていいから
%で余り算して定期的に
進捗をアップデートしてんだわ
ところがその進捗報告DBアクセスで
非同期が発生してループの順序が乱れる
進捗状況の進行度が進んだり戻ったり
トリッキーに変動するんだわ
でもループの最後まで到達して完了すると
全てのデータ整合してんだわw
なぜ中間状態だけこんなにトリッキーなのか謎
505デフォルトの名無しさん
2020/09/01(火) 21:24:55.53ID:I2eVqLbl コード書くのやめろ
506デフォルトの名無しさん
2020/09/01(火) 21:59:23.78ID:usFRsaVF 進捗の書き込みはシリアルにやればいいよね?
「80%完了」の後に「70%完了」が来ても無視すればいい
「80%完了」の後に「70%完了」が来ても無視すればいい
507デフォルトの名無しさん
2020/09/01(火) 22:02:04.20ID:QR4OvP6I508デフォルトの名無しさん
2020/09/01(火) 22:05:22.51ID:3AXmEbq5 コードも無しで言われても知らんわ
509デフォルトの名無しさん
2020/09/01(火) 22:28:22.77ID:usFRsaVF510デフォルトの名無しさん
2020/09/02(水) 02:59:56.27ID:bHRnrATQ 7月入ってからageながら変なこと書いてんの同じ人っぽいな
挫けないでがんばれよ
挫けないでがんばれよ
511デフォルトの名無しさん
2020/09/02(水) 12:32:41.24ID:U40YU3HI 並列処理しなければ良い
1つが、確実に終わってから、
次のものを処理する
1つが、確実に終わってから、
次のものを処理する
512デフォルトの名無しさん
2020/09/02(水) 13:19:02.32ID:FrAP3fk+ 回答者まで同じ内容を繰り返し始めたw
513デフォルトの名無しさん
2020/09/02(水) 21:31:48.71ID:C0O9Iab7 >>504
こうなる原因が今日特定出来た
ループ自体が多重に並列に動作してた
1つのfor文が動いてるんだと思ってたら
ログをよくよく見たらfor文自体が
3つくらい並列で動いてた
勝手に多重実行になった原因は、
MySQLが処理しきれなくなってタイムアウトが
発生したあと
nodeが自動で(promiseの仕様?)最初から
リクエストの処理をリトライするようで
ピタゴラスイッチのアルゴリズム体操見たいに
なってたわw
初歩的な質問ですが
サーバに飛んできたリクエストだけを中断するには
exitが正解ですか?
returnが正解ですか?
res.end(); ですか?
サーバ自体は止めたくありませんが
ある関数自体を中断するだけでなく
そのリクエストだけ大元から全部中断したいです
こうなる原因が今日特定出来た
ループ自体が多重に並列に動作してた
1つのfor文が動いてるんだと思ってたら
ログをよくよく見たらfor文自体が
3つくらい並列で動いてた
勝手に多重実行になった原因は、
MySQLが処理しきれなくなってタイムアウトが
発生したあと
nodeが自動で(promiseの仕様?)最初から
リクエストの処理をリトライするようで
ピタゴラスイッチのアルゴリズム体操見たいに
なってたわw
初歩的な質問ですが
サーバに飛んできたリクエストだけを中断するには
exitが正解ですか?
returnが正解ですか?
res.end(); ですか?
サーバ自体は止めたくありませんが
ある関数自体を中断するだけでなく
そのリクエストだけ大元から全部中断したいです
514デフォルトの名無しさん
2020/09/02(水) 22:07:44.16ID:m9UvO5Rn お前がコード書くのをやめる、が正解
515デフォルトの名無しさん
2020/09/07(月) 13:52:39.16ID:KQEAaFWf どなたか、次の JS のコードの結果が、2,5,3 ではなく、2,3,5 になっている理由を説明出来ますか?
console.log( "0" );
var sample = new Promise( function(resolve, reject) {
console.log( "1" );
setTimeout(function() {
console.log( "2" );
resolve();
console.log( "3" );
}, 1000);
});
console.log( "4" );
sample.then( function(value) {
console.log( "5" );
});
console.log( "6" );
[結果]
0
1
4
6
2
3
5
console.log( "0" );
var sample = new Promise( function(resolve, reject) {
console.log( "1" );
setTimeout(function() {
console.log( "2" );
resolve();
console.log( "3" );
}, 1000);
});
console.log( "4" );
sample.then( function(value) {
console.log( "5" );
});
console.log( "6" );
[結果]
0
1
4
6
2
3
5
516デフォルトの名無しさん
2020/09/07(月) 14:38:17.12ID:UUesL9I9 説明できますかって何だよ挑発してんのかよ
resolve()は必ずイベントループに戻ってからthen()のコールバックが呼ばれるからに決まってるだろがボケカス
マイクロタスクキューでも調べやがれポンコツ
resolve()は必ずイベントループに戻ってからthen()のコールバックが呼ばれるからに決まってるだろがボケカス
マイクロタスクキューでも調べやがれポンコツ
517デフォルトの名無しさん
2020/09/07(月) 15:25:12.91ID:Egt+Qwmp 0
4
1
6
2
3
5
とか
0
4
6
1
2
3
5
にならない?
4
1
6
2
3
5
とか
0
4
6
1
2
3
5
にならない?
518デフォルトの名無しさん
2020/09/07(月) 15:45:30.49ID:UUesL9I9 ならない
Promiseコンストラクタはコールバックを即時実行する
MDN
executor 関数は Promise 実装により resolve 関数と reject 関数が渡されて即座に実行されます (Promise コンストラクターが作成したオブジェクトを返すよりも前に executor は呼び出されます)。
Promiseコンストラクタはコールバックを即時実行する
MDN
executor 関数は Promise 実装により resolve 関数と reject 関数が渡されて即座に実行されます (Promise コンストラクターが作成したオブジェクトを返すよりも前に executor は呼び出されます)。
519デフォルトの名無しさん
2020/09/07(月) 17:09:51.23ID:3uGG3SyO >>515
コールスタックが空にならないと、各種キューに入ってる処理は実行されない
最初にconsole.log(“6”);まで処理したらスタックが空になる
その状態でsetTimeoutのタイマーが発動してキューにコールバック関数が入る
スタックが空なのでキューの1番目にあるsetTimeoutのコールバック関数がスタックに積まれて呼び出される
この関数がreturnするまではスタックは空にならないので
それまではキューに入った処理を実行するタイミングはない
console.log(“3”);まで実行してreturnしたらスタックが空になるので
その後、各種キューに入ってる処理があれば実行される
コールスタックが空にならないと、各種キューに入ってる処理は実行されない
最初にconsole.log(“6”);まで処理したらスタックが空になる
その状態でsetTimeoutのタイマーが発動してキューにコールバック関数が入る
スタックが空なのでキューの1番目にあるsetTimeoutのコールバック関数がスタックに積まれて呼び出される
この関数がreturnするまではスタックは空にならないので
それまではキューに入った処理を実行するタイミングはない
console.log(“3”);まで実行してreturnしたらスタックが空になるので
その後、各種キューに入ってる処理があれば実行される
520デフォルトの名無しさん
2020/09/07(月) 17:21:12.28ID:KQEAaFWf 試してみたんですが、setTimeout()で指定している関数の中で、
resolve(111);
resolve(222);
resolve(333);
としてから、
sample.then( function(value) {
console.log( "5, value=", value );
});
とすると、
5, value = 111
とだけ表示されて、222, 333 の分は表示されないんですが、どういった
理由なのでしょう。
resolve(111);
resolve(222);
resolve(333);
としてから、
sample.then( function(value) {
console.log( "5, value=", value );
});
とすると、
5, value = 111
とだけ表示されて、222, 333 の分は表示されないんですが、どういった
理由なのでしょう。
521デフォルトの名無しさん
2020/09/07(月) 17:33:56.06ID:Egt+Qwmp お前はもう死んでいる
522デフォルトの名無しさん
2020/09/07(月) 17:39:40.90ID:UUesL9I9 最初にresolve()した時点でそのPromiseの値は確定するから
つかスレに書き込む暇があるならドキュメントでも何でもいいから学習してPromiseがどういうもんか理解してから試せよ
Promiseってのは「将来確定する"値"」を表現するもんなんだよ
つかスレに書き込む暇があるならドキュメントでも何でもいいから学習してPromiseがどういうもんか理解してから試せよ
Promiseってのは「将来確定する"値"」を表現するもんなんだよ
523デフォルトの名無しさん
2020/09/07(月) 17:52:24.52ID:neZOTIA1 一旦解決したPromiseを再度変更出来たらそれは改竄と呼ぶべきだな
reject(111);
resolve(222);
reject(333);
これは成功したのか失敗したのかどっちよ?
reject(111);
resolve(222);
reject(333);
これは成功したのか失敗したのかどっちよ?
524デフォルトの名無しさん
2020/09/07(月) 18:07:19.89ID:ieMFgaPK これ近頃よく見る相手にしちゃダメなやつだな
525デフォルトの名無しさん
2020/09/07(月) 18:08:35.44ID:UUesL9I9 最初のreject()で失敗が確定する
Promiseの状態はpending→settledと変わる
settledにはfulfilledとfailedがある
resolve()でfulfilled、reject()でfailedになる
Promiseの状態はpending→settledと変わる
settledにはfulfilledとfailedがある
resolve()でfulfilled、reject()でfailedになる
526デフォルトの名無しさん
2020/09/08(火) 00:01:18.48ID:8muSUg7S nodeの非同期を同期的にやりたい時のコードって
promise async await
resolve thenが複雑に入り組んで
意図した動きになった時はめっちゃ過剰なコードになるよね
精神的にヘトヘトに疲れて 清書する元気も起きん
promiseやresolve変数がたくさん生成しまくって
名前つけるのもめんどうになって
p1とかr3みたいなのが沢山できてる
特にforループの中に非同期使うときは地獄
早くmysqlを同期的にクエリ投げられる
ライブラリ出してください。何でもしますから。
promise async await
resolve thenが複雑に入り組んで
意図した動きになった時はめっちゃ過剰なコードになるよね
精神的にヘトヘトに疲れて 清書する元気も起きん
promiseやresolve変数がたくさん生成しまくって
名前つけるのもめんどうになって
p1とかr3みたいなのが沢山できてる
特にforループの中に非同期使うときは地獄
早くmysqlを同期的にクエリ投げられる
ライブラリ出してください。何でもしますから。
527デフォルトの名無しさん
2020/09/08(火) 01:45:13.23ID:1Wq/gxeB だからお前はプログラマやめろって
才能なさすぎ
才能なさすぎ
528デフォルトの名無しさん
2020/09/08(火) 02:32:28.50ID:o0Kum352 >>526
nodeも非同期も関係なくお前がめっちゃ過剰なコード書いてるだけだからな
nodeも非同期も関係なくお前がめっちゃ過剰なコード書いてるだけだからな
529デフォルトの名無しさん
2020/09/08(火) 12:00:40.54ID:gglleEZ2 ライブラリは需要があればとっくに作られてる
今現在無いのはつまりそういうことだ
今現在無いのはつまりそういうことだ
530デフォルトの名無しさん
2020/09/08(火) 12:14:59.78ID:1sQ8nqM1 そこの無能が探してもいないだけで無いわけじゃないだろ
例えばあるライブラリのREADMEから
const conn = await mysql.createConnection({ database: test });
const [rows, fields] = await conn.execute('select ?+? as sum', [2, 2]);
await conn.end();
トランザクションも
await connection.beginTransaction();
〜
await connection.commit();
と書ける
例えばあるライブラリのREADMEから
const conn = await mysql.createConnection({ database: test });
const [rows, fields] = await conn.execute('select ?+? as sum', [2, 2]);
await conn.end();
トランザクションも
await connection.beginTransaction();
〜
await connection.commit();
と書ける
531デフォルトの名無しさん
2020/09/08(火) 13:42:27.36ID:8muSUg7S select文を投げるのは
selectの結果が欲しいから投げる訳であって
結果が取得できる前に
後続のコードに勝手に動かれたら困るのは
当たり前だよなあ?
DBアクセスで非同期って何がメリットが
あるのか分からない。
それにnodeの概念はバカの新人に言葉で説明しにくいんだよ
あいつぜってー非同期とか理解出来ねえぞ
selectの結果が欲しいから投げる訳であって
結果が取得できる前に
後続のコードに勝手に動かれたら困るのは
当たり前だよなあ?
DBアクセスで非同期って何がメリットが
あるのか分からない。
それにnodeの概念はバカの新人に言葉で説明しにくいんだよ
あいつぜってー非同期とか理解出来ねえぞ
532デフォルトの名無しさん
2020/09/08(火) 13:47:44.03ID:op+kwVtr 新人に言葉で説明できないバカ
新人かわいそう
新人かわいそう
533デフォルトの名無しさん
2020/09/08(火) 13:57:56.32ID:c4WmASUK > 勝手に動かれたら
何も理解してないことがよく分かるw
何も理解してないことがよく分かるw
534デフォルトの名無しさん
2020/09/08(火) 14:51:08.13ID:QV2EnsJl お前の場合はMySQL一つしか使わないのが当たり前かもしれないが世の中にはシャードされた複数のMySQLにアクセスしたりキャッシュのRedisにアクセスしたり検索エンジンのelasticsearchにアクセスしたりいろんなことをしなきゃいけないアプリがあったりするわけ
Nodeではこれらは非同期だから特別なことをしなくてもたやすく並行アクセスできる
同期で並行アクセスしようとすると複数スレッド使って待ち合わせすることになるから非同期より簡単にできるわけではない
Nodeではこれらは非同期だから特別なことをしなくてもたやすく並行アクセスできる
同期で並行アクセスしようとすると複数スレッド使って待ち合わせすることになるから非同期より簡単にできるわけではない
535デフォルトの名無しさん
2020/09/08(火) 16:00:24.51ID:8muSUg7S536デフォルトの名無しさん
2020/09/08(火) 17:40:30.89ID:Qj0BclxS 本当に本当にダメなヤツだなぁ(呆れ)
アクセスってのは接続して要求を投げて結果を受け取ってそれを処理して接続を閉じるまでの一連に決まってるだろ
>>530の例だって後始末まで書いてあるのに全然大変じゃないだろが
アクセスってのは接続して要求を投げて結果を受け取ってそれを処理して接続を閉じるまでの一連に決まってるだろ
>>530の例だって後始末まで書いてあるのに全然大変じゃないだろが
537デフォルトの名無しさん
2020/09/08(火) 19:19:05.95ID:gglleEZ2 とりあえずオライリーでも読んだらいいんじゃない
https://www.am;azon.jp/dp/4873118735/
https://www.am;azon.jp/dp/4873118735/
538デフォルトの名無しさん
2020/09/09(水) 06:42:52.84ID:N3PFvdWI スレ的には真っ当な質問なのに当たり強過ぎでしょ
539デフォルトの名無しさん
2020/09/09(水) 08:44:06.86ID:7Dxn++Hv 質問じゃなくて文句
540デフォルトの名無しさん
2020/09/09(水) 17:07:03.98ID:SFlZHAWP 謙虚に質問してればレスも優しかったかもよ
541デフォルトの名無しさん
2020/09/09(水) 21:03:51.38ID:OFM+73CL 分からないだけならともかく延々と自分以外を貶めつつ無能を晒してたからなぁ
542デフォルトの名無しさん
2020/09/09(水) 21:12:34.50ID:XGuez22g それな
× node.js が悪い
× 非同期が悪い
× promise が悪い
× async/awaitが悪い
× 新人がバカ
○ ID:8muSUg7S がバカ
こうだからな
× node.js が悪い
× 非同期が悪い
× promise が悪い
× async/awaitが悪い
× 新人がバカ
○ ID:8muSUg7S がバカ
こうだからな
543デフォルトの名無しさん
2020/09/10(木) 14:55:06.91ID:rLZBXCmM グレたωωω
544デフォルトの名無しさん
2020/09/10(木) 19:56:10.61ID:FWP0gZB+ clusterでマルチプロセスしようとしたんだけど
「EADDRINUSE(ポートが既に使われている)」
エラーがどうしても出てしまいます。
もちろん既に稼働しているnodeはなく、
fork元のapp.jsでlistenしているのと同じポート
子プロセスでまたbindしようとして失敗しているようで
子プロセスは外部からリクエストを受けるような
ものではなく、重い処理をコア分散させて並列処理したいだけです
子プロセスにポート割り当てが必要な理由がよく分かりませんが
恐らく親プロセスと子プロセス間の通信
とかに使うんでしょうか?
子プロセスのポート割り当て回避か、
親プロセスと別ポートを割り当てる方法はありますか?
「EADDRINUSE(ポートが既に使われている)」
エラーがどうしても出てしまいます。
もちろん既に稼働しているnodeはなく、
fork元のapp.jsでlistenしているのと同じポート
子プロセスでまたbindしようとして失敗しているようで
子プロセスは外部からリクエストを受けるような
ものではなく、重い処理をコア分散させて並列処理したいだけです
子プロセスにポート割り当てが必要な理由がよく分かりませんが
恐らく親プロセスと子プロセス間の通信
とかに使うんでしょうか?
子プロセスのポート割り当て回避か、
親プロセスと別ポートを割り当てる方法はありますか?
545デフォルトの名無しさん
2020/09/10(木) 20:18:09.02ID:VafdMbGz > 子プロセスは外部からリクエストを受けるようなものではなく
それならclusterモジュールは必要なくね
clustetは複数のプロセスを使って大量のリクエストを捌くためのもの
ただの子プロセスならchild_processのメソッドを使う
それならclusterモジュールは必要なくね
clustetは複数のプロセスを使って大量のリクエストを捌くためのもの
ただの子プロセスならchild_processのメソッドを使う
546デフォルトの名無しさん
2020/09/10(木) 20:21:53.78ID:C+K2oJgr547デフォルトの名無しさん
2020/09/10(木) 20:43:38.94ID:oBZEl9rg clusterだと親は子を産むだけの役割じゃなかったっけ
548デフォルトの名無しさん
2020/09/10(木) 20:45:06.67ID:oBZEl9rg あとworker_threadsで同じエラーが出るのはいくらなんでもおかしい
549デフォルトの名無しさん
2020/09/14(月) 20:42:48.98ID:JdQogpR1 >>544 の者ですが
今日これをデバッグしてました。
clusterでもwoker_threadsfでも
child_processでも
「EADDRINUSE」が発生しました
発生するタイミングは子プロセスを生成した時でも
なく
子プロセスでMySQLに対しのコネクション確立時でもなく
確立したDBコネクションからクエリを投げるコード
を実行する時に発生しますが
なぜこのタイミングなのか分かりません
ここで気になったのが
nodeでフロントユーザーに対し
80番ポートをlistenしていて
nodeがローカルのMySQLにアクセスする時
nodeのクライアントポートはフロントと
おなじ80を使うのでしょうか?
それとも別のランダムポートを取得してきて使うのでしょうか?
今日これをデバッグしてました。
clusterでもwoker_threadsfでも
child_processでも
「EADDRINUSE」が発生しました
発生するタイミングは子プロセスを生成した時でも
なく
子プロセスでMySQLに対しのコネクション確立時でもなく
確立したDBコネクションからクエリを投げるコード
を実行する時に発生しますが
なぜこのタイミングなのか分かりません
ここで気になったのが
nodeでフロントユーザーに対し
80番ポートをlistenしていて
nodeがローカルのMySQLにアクセスする時
nodeのクライアントポートはフロントと
おなじ80を使うのでしょうか?
それとも別のランダムポートを取得してきて使うのでしょうか?
550デフォルトの名無しさん
2020/09/14(月) 20:55:49.60ID:AayaioGL 説明と全然違う事象じゃねーの
せめてエラーメッセージとスタックトレース貼れ
せめてエラーメッセージとスタックトレース貼れ
551デフォルトの名無しさん
2020/09/14(月) 20:55:58.86ID:JdQogpR1 続きですか
もう少し調べてみると
「EADDRINUSE」が発生するタイミングは
MySQLに対しコネクション確立後
SQLを投げる時で間違いないと思いますが、
エラーのスタックとレースを見ても
何かのハンドラから駆動されており自分の書いたコードでは
ありません。
nodeかexpressかmysqlモジュールのハンドラ
だと思います
子プロセスはローカルのMySQLに対して
接続して読み書きするだけで
フロントとのやり取りは一切ありませんが
生成元の親プロセスはExpressのapp.js
で立ち上げてるwebアプリです
もう少し調べてみると
「EADDRINUSE」が発生するタイミングは
MySQLに対しコネクション確立後
SQLを投げる時で間違いないと思いますが、
エラーのスタックとレースを見ても
何かのハンドラから駆動されており自分の書いたコードでは
ありません。
nodeかexpressかmysqlモジュールのハンドラ
だと思います
子プロセスはローカルのMySQLに対して
接続して読み書きするだけで
フロントとのやり取りは一切ありませんが
生成元の親プロセスはExpressのapp.js
で立ち上げてるwebアプリです
552デフォルトの名無しさん
2020/09/14(月) 20:56:11.94ID:JdQogpR1 不思議なのが子プロセスで
mysqlとコネクション確立までは失敗せずに
動作し、SQLを投げる段階で
なぜか大元の「app.js」をもう1つ起動しようとしており
app.jsはもう既に起動してるので、
listenポート重複により上記のエラーが発生するわけです
暫定対応で動くようにはなりましたが、
なぜローカルのDBアクセス時にapp.js実行する
動きをするのかの原因がまだ分かっていません
webとは関係ないはずの子プロセスのファイルを
単体でコマンドで実行した場合も
Expressのベースディレクトリにある
「app.js」が実行されていることが分かりました。
自身のコードではこのようなことをしてないので
フレームワークかモジュールの内部処理だと思いますが、
知っている方がいましたら教えてください。
mysqlとコネクション確立までは失敗せずに
動作し、SQLを投げる段階で
なぜか大元の「app.js」をもう1つ起動しようとしており
app.jsはもう既に起動してるので、
listenポート重複により上記のエラーが発生するわけです
暫定対応で動くようにはなりましたが、
なぜローカルのDBアクセス時にapp.js実行する
動きをするのかの原因がまだ分かっていません
webとは関係ないはずの子プロセスのファイルを
単体でコマンドで実行した場合も
Expressのベースディレクトリにある
「app.js」が実行されていることが分かりました。
自身のコードではこのようなことをしてないので
フレームワークかモジュールの内部処理だと思いますが、
知っている方がいましたら教えてください。
553デフォルトの名無しさん
2020/09/14(月) 20:57:39.11ID:JdQogpR1554デフォルトの名無しさん
2020/09/14(月) 21:14:49.11ID:AayaioGL > 単体でコマンドで実行した場合も
> Expressのベースディレクトリにある
> 「app.js」が実行されていることが分かりました。
clusterも何も関係ねーじゃんwww
断言するがフレームワークもモジュールもmysqlも関係なくてお前のバグだから真面目に仕事しろ
子プロセスから再現に関係ない部分を削除しまくって最小限のここで見せられるコードになるまで書き込まなくていいよ
> Expressのベースディレクトリにある
> 「app.js」が実行されていることが分かりました。
clusterも何も関係ねーじゃんwww
断言するがフレームワークもモジュールもmysqlも関係なくてお前のバグだから真面目に仕事しろ
子プロセスから再現に関係ない部分を削除しまくって最小限のここで見せられるコードになるまで書き込まなくていいよ
555デフォルトの名無しさん
2020/10/03(土) 14:17:11.74ID:l4QjehZB https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14232251614?sort=1&page=2
abiko tetuってやつヤバすぎ
abiko tetuってやつヤバすぎ
556デフォルトの名無しさん
2020/10/17(土) 18:10:22.96ID:cX3MrjsP フォルダ全体をコピーしたくて fs-extra のcopySync()を使うために
const fse = require('fs-extra');
としたら、
internal/modules/cjs/loader.js:968
throw err;
^
Error: Cannot find module 'fs-extra'
というエラーが出ます。
npm install fs-extra
や
npm install -g fs-extra
を試しましたが、途中で警告が出たりして、結局、元のエラーは直りません。
直す方法はありますでしょうか?
const fse = require('fs-extra');
としたら、
internal/modules/cjs/loader.js:968
throw err;
^
Error: Cannot find module 'fs-extra'
というエラーが出ます。
npm install fs-extra
や
npm install -g fs-extra
を試しましたが、途中で警告が出たりして、結局、元のエラーは直りません。
直す方法はありますでしょうか?
557デフォルトの名無しさん
2020/10/17(土) 18:39:14.64ID:cX3MrjsP >>556
結論的には、
$ npm install -g fs-extra
$ set NODE_PATH=%AppData%\npm\node_modules
としてから、
node xxxx.js
とすると直りました。
結論的には、
$ npm install -g fs-extra
$ set NODE_PATH=%AppData%\npm\node_modules
としてから、
node xxxx.js
とすると直りました。
558デフォルトの名無しさん
2020/10/17(土) 23:48:03.55ID:5XNVi7jP Windows?
559デフォルトの名無しさん
2020/10/19(月) 16:19:09.43ID:faSV5MEm # Fatal error in , line 0
とか見慣れぬエラーで落ちててビビって調べたらv14のバグか
とか見慣れぬエラーで落ちててビビって調べたらv14のバグか
560デフォルトの名無しさん
2020/10/25(日) 03:29:13.70ID:xG/xcmJA import って mjsにしないといけないし
561デフォルトの名無しさん
2020/10/25(日) 03:30:20.11ID:xG/xcmJA 途中送信すまん
562デフォルトの名無しさん
2020/10/25(日) 04:23:13.46ID:Xs0QdE0/ mjsにしないといけないから何なんだよ気になるだろ…
因みにpackage.json弄れば.jsをESM扱いにはできる
因みにpackage.json弄れば.jsをESM扱いにはできる
563デフォルトの名無しさん
2020/10/25(日) 13:32:05.91ID:xG/xcmJA node v15にしたからmjsにして requireを全部importに変更したらpuppeteerがimportできなくてまたrequireに戻した
564デフォルトの名無しさん
2020/10/26(月) 06:48:46.11ID:AP4vuhmG 下記のモジュールを使用してHTMLソースからタグを全て取り除く処理を作っているのですが、タグを取り除いてくれません。
ES6で記述されたjavascriptを対応していないブラウザで動作させるために記法を変換してから読み込ませることは知っているのですが、
nodeコマンドで直接実行する場合にもそのような記法の変換などが必要なのでしょうか?
◆モジュール
https://github.com/ericnorris/striptags
◆ソース
main.js
-----
var striptags = require('striptags');
striptags(html);
console.log(html); // 取り除かれていない
◆コンソールで書きコマンドを実行
node main.js
ES6で記述されたjavascriptを対応していないブラウザで動作させるために記法を変換してから読み込ませることは知っているのですが、
nodeコマンドで直接実行する場合にもそのような記法の変換などが必要なのでしょうか?
◆モジュール
https://github.com/ericnorris/striptags
◆ソース
main.js
-----
var striptags = require('striptags');
striptags(html);
console.log(html); // 取り除かれていない
◆コンソールで書きコマンドを実行
node main.js
565デフォルトの名無しさん
2020/10/26(月) 13:39:27.76ID:jWz3MMEX html = striptags(html);
じゃないの?
じゃないの?
566デフォルトの名無しさん
2020/10/26(月) 14:12:32.65ID:AP4vuhmG >>565
教えて頂いた方法で取り除かれていることが確認できました。
公開されているソースを確認したら戻り値を受け取るようになっていました。
今後はソースも確認するようにします。
ありがとうございました。
教えて頂いた方法で取り除かれていることが確認できました。
公開されているソースを確認したら戻り値を受け取るようになっていました。
今後はソースも確認するようにします。
ありがとうございました。
567デフォルトの名無しさん
2020/10/26(月) 14:44:15.69ID:/aZJ5myY その前にJavaScriptの勉強をちゃんとすべきでは。。。
JSの文字列は不変って知ってればstriptagsの使い方を知らなくても>>564の書き方じゃダメってわかったはず
JSの文字列は不変って知ってればstriptagsの使い方を知らなくても>>564の書き方じゃダメってわかったはず
568デフォルトの名無しさん
2020/10/28(水) 03:46:46.75ID:Xggm0kAQ Fetchより先にAbortControllerが来るのタイムパラドックス感がある
569デフォルトの名無しさん
2020/10/28(水) 14:31:46.46ID:jeoOjGPI node.jsがあればPHPはもういらないよね?
570デフォルトの名無しさん
2020/10/28(水) 14:45:56.45ID:Nt7id6vD そんなことはない
571デフォルトの名無しさん
2020/10/28(水) 23:57:51.70ID:jeoOjGPI >>570
なぜ?
なぜ?
572デフォルトの名無しさん
2020/10/29(木) 00:23:44.55ID:6kIeo5xU rdb扱うのはphpの方が得意やろ
573デフォルトの名無しさん
2020/10/29(木) 00:35:34.69ID:Phiv6uZl >>563
v15で試したけど import puppeteer from 'puppeteer' で読み込めてるよ
v15で試したけど import puppeteer from 'puppeteer' で読み込めてるよ
574デフォルトの名無しさん
2020/10/29(木) 10:07:34.55ID:D91L/a15 俺も文法的にはPHPよりもjavascriptの方が好みなので、できれば移行したいんだけど、
URL単位で小物サービスを作る用途がメインなので今でもPHPを使ってしまう。
なんか、node.jsはCGI的に使うのはナンセンスという雰囲気があって、
でも、たまにしか使わない小物サービス毎にポート番号を消費したくない、
と思うと移行できない。
こんな俺にもおすすめなnode.jsの使い方ってある?
URL単位で小物サービスを作る用途がメインなので今でもPHPを使ってしまう。
なんか、node.jsはCGI的に使うのはナンセンスという雰囲気があって、
でも、たまにしか使わない小物サービス毎にポート番号を消費したくない、
と思うと移行できない。
こんな俺にもおすすめなnode.jsの使い方ってある?
575デフォルトの名無しさん
2020/10/29(木) 10:28:14.20ID:89EHBpBz レンタルサーバーだといまだにPHPだかんね
576デフォルトの名無しさん
2020/10/29(木) 11:43:25.35ID:6uKcySyb >>573
ありがとうございます。 -gでインストールしてたのがいけないっぽいです
ありがとうございます。 -gでインストールしてたのがいけないっぽいです
577デフォルトの名無しさん
2020/10/29(木) 16:31:46.11ID:Phiv6uZl578デフォルトの名無しさん
2020/10/29(木) 21:26:42.11ID:/i1l21sm >>574
無料オンライン格ゲーを作る。
無料オンライン格ゲーを作る。
579デフォルトの名無しさん
2020/10/29(木) 23:24:45.00ID:D91L/a15580デフォルトの名無しさん
2020/11/07(土) 11:58:54.69ID:fULQIOig npm-run-all で複数のnpm scriptを連続で実行したいんだが、scriptのどれか一つでも
0以外のステータスを返すとそこで処理をやめてしまうのをどうにかできないのかな。
大抵の場合はその仕様でもいいんだけど、たまに、エラーだろうがなんだろうがとにかく
処理しきってしまいたい場合がある。
0以外のステータスを返すとそこで処理をやめてしまうのをどうにかできないのかな。
大抵の場合はその仕様でもいいんだけど、たまに、エラーだろうがなんだろうがとにかく
処理しきってしまいたい場合がある。
581デフォルトの名無しさん
2020/11/07(土) 12:35:45.81ID:1KfyiAX9582デフォルトの名無しさん
2020/11/07(土) 12:39:43.17ID:fULQIOig さんきう。オプション見落としてた。
583デフォルトの名無しさん
2020/11/14(土) 16:32:10.90ID:XA/NhCB9 574です。
$ express --ejs myapp
を実行して、routes/index.jsに
router.all('/:ejs',(req,res)=>res.render(req.params.ejs,{req:req}))
の1行を書き加えただけでかなりphpっぽく使えるね。
ejsファイルを置くだけで、nodeを再起動しなくていいし。
ejsファイルが存在しないときに404 Not Foundじゃなくてエラー画面が出るのが愛嬌だけど。
$ express --ejs myapp
を実行して、routes/index.jsに
router.all('/:ejs',(req,res)=>res.render(req.params.ejs,{req:req}))
の1行を書き加えただけでかなりphpっぽく使えるね。
ejsファイルを置くだけで、nodeを再起動しなくていいし。
ejsファイルが存在しないときに404 Not Foundじゃなくてエラー画面が出るのが愛嬌だけど。
584デフォルトの名無しさん
2020/11/18(水) 14:56:07.27ID:7Ekft4aV おめーら的にdenoってどうすか?
使ったことなさそうだけど
使ったことなさそうだけど
585デフォルトの名無しさん
2020/11/18(水) 19:28:04.93ID:Zh0DQZnV ほんのちょっとしか触ってないけど面倒くささが無い
npmライブラリが使えないけど init だの install だの package.json だの tsc だのやったりいじったりしないで済むから手軽に感じた
時間が経ってライブラリが充実してくれれば普通に使いやすい環境だと思う
npmライブラリが使えないけど init だの install だの package.json だの tsc だのやったりいじったりしないで済むから手軽に感じた
時間が経ってライブラリが充実してくれれば普通に使いやすい環境だと思う
586デフォルトの名無しさん
2020/11/18(水) 20:11:49.14ID:7Ekft4aV 期待したいよな
開発者はイケメンだし
開発者はイケメンだし
587デフォルトの名無しさん
2020/11/18(水) 21:25:12.52ID:v8HWKopj npmが使えないからエコシステムが育つまで様子見だな。
@types以前のTypeScriptみたいな。
@types以前のTypeScriptみたいな。
588デフォルトの名無しさん
2020/11/19(木) 01:51:43.98ID:/aqa7r+0 io.jsのように良い部分はNode.js側に取り込んでほしいね
最近は複雑さばかりが増しているし
最近は複雑さばかりが増しているし
589デフォルトの名無しさん
2020/11/21(土) 19:45:56.38ID:ANSb4B/j express 5.xを使ってみたいんだけど、4.17.1になってしまう。
どうすればいいの?
$ npm init --y
$ npm install express@>=5.0.0-alpha.8 --save
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN e5@1.0.0 No description
npm WARN e5@1.0.0 No repository field.
$ npm view express version
4.17.1
どうすればいいの?
$ npm init --y
$ npm install express@>=5.0.0-alpha.8 --save
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN e5@1.0.0 No description
npm WARN e5@1.0.0 No repository field.
$ npm view express version
4.17.1
590デフォルトの名無しさん
2020/11/21(土) 23:08:26.52ID:jQLdetle Ruby のBundler なら、プロジェクトルートに移動してから、
Gemfile にバージョン指定を書いて、
bundle install とコマンド入力するけど
Gemfile にバージョン指定を書いて、
bundle install とコマンド入力するけど
591デフォルトの名無しさん
2020/11/21(土) 23:54:59.89ID:lsz7D7Ic592デフォルトの名無しさん
2020/11/22(日) 00:38:30.85ID:gYBzGuNC expressは当時koaに移行するのかと思ってたけど結局どっちも開発続いてるのな
593デフォルトの名無しさん
2020/11/22(日) 00:44:07.65ID:A21DE4YF koaもhapiもfastifyもexpressの牙城は崩せそうもない
レスを投稿する
ニュース
- ドリフトは「危険運転」、法改正で処罰対象に追加へ…「極めて危険だが規定がない」事態解消 [七波羅探題★]
- 【日中対立】在日本中国大使館、サンフランシスコ講和条約「不法かつ無効な文書」とSNSに投稿 高市首相が党首討論で引用 ★2 [ぐれ★]
- 【芸能】「加害の歴史を直視しない政治家が国の顔に」 宍戸開の批判に議論勃! 高市発言で揺れる芸能界… [冬月記者★]
- 拳銃24丁を中国から日本国内に輸入した疑い 中国人の46歳の男逮捕 1丁約3000円で販売 [七波羅探題★]
- 糖尿病疑い全国で1100万人、8年で100万人増…厚労省推計 [蚤の市★]
- 【文春】AKB48『紅白歌合戦』出場へ! 前田敦子&大島優子が限定復活! 『ヘビロテ』など黄金期メドレー披露 神7の多くが出場 [冬月記者★]
- 安倍昭恵「あ〜んコテツ!会いたい!」山上裁判出席決定wwwwwwwww [947332727]
- 【号外】山上徹也裁判に安倍昭恵出席で最終調整 [115996789]
- 40代独身「なんかゲームとか漫画とか消費するだけのコンテンツに完全に飽きちゃったぞ…」 次は何がおすすめ? [909790798]
- 女「AV被害に溢れてるのになぜAV禁止にしないのか」AV女優「余計な事言うのやめて」
- 肉体労働僕氏、デスクワークがしたい
- ホリエモン「家賃ケチって1時間かけて通勤する人は、給料の20%を失っているわけだけど、気づいてる?」 [315293707]
