X



【node.js】サーバサイドjavascript 5【Nashorn】

0001デフォルトの名無しさん
垢版 |
2018/02/13(火) 22:21:33.91ID:moEhrPrC
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/
0506デフォルトの名無しさん
垢版 |
2020/09/01(火) 21:59:23.78ID:usFRsaVF
進捗の書き込みはシリアルにやればいいよね?
「80%完了」の後に「70%完了」が来ても無視すればいい
0507デフォルトの名無しさん
垢版 |
2020/09/01(火) 22:02:04.20ID:QR4OvP6I
>>506
無視するようにしてるんだよ
whereで大小比較して
更新する数の方が小さかったら更新されないように
してる
でもDB上の数値が減るんだよ。何故だ?
0509デフォルトの名無しさん
垢版 |
2020/09/01(火) 22:28:22.77ID:usFRsaVF
>>507
シリアルに書いてないからでしょ
今実行中の進捗報告の書き込みが完了してから
次の進捗報告の書き込みをする

理解できないほうが謎
0510デフォルトの名無しさん
垢版 |
2020/09/02(水) 02:59:56.27ID:bHRnrATQ
7月入ってからageながら変なこと書いてんの同じ人っぽいな
挫けないでがんばれよ
0513デフォルトの名無しさん
垢版 |
2020/09/02(水) 21:31:48.71ID:C0O9Iab7
>>504
こうなる原因が今日特定出来た
ループ自体が多重に並列に動作してた
1つのfor文が動いてるんだと思ってたら
ログをよくよく見たらfor文自体が
3つくらい並列で動いてた
勝手に多重実行になった原因は、
MySQLが処理しきれなくなってタイムアウトが
発生したあと
nodeが自動で(promiseの仕様?)最初から
リクエストの処理をリトライするようで
ピタゴラスイッチのアルゴリズム体操見たいに
なってたわw

初歩的な質問ですが
サーバに飛んできたリクエストだけを中断するには
exitが正解ですか?
returnが正解ですか?
res.end(); ですか?
サーバ自体は止めたくありませんが
ある関数自体を中断するだけでなく
そのリクエストだけ大元から全部中断したいです
0515デフォルトの名無しさん
垢版 |
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
0516デフォルトの名無しさん
垢版 |
2020/09/07(月) 14:38:17.12ID:UUesL9I9
説明できますかって何だよ挑発してんのかよ
resolve()は必ずイベントループに戻ってからthen()のコールバックが呼ばれるからに決まってるだろがボケカス
マイクロタスクキューでも調べやがれポンコツ
0517デフォルトの名無しさん
垢版 |
2020/09/07(月) 15:25:12.91ID:Egt+Qwmp
0
4
1
6
2
3
5

とか

0
4
6
1
2
3
5

にならない?
0518デフォルトの名無しさん
垢版 |
2020/09/07(月) 15:45:30.49ID:UUesL9I9
ならない
Promiseコンストラクタはコールバックを即時実行する

MDN
executor 関数は Promise 実装により resolve 関数と reject 関数が渡されて即座に実行されます (Promise コンストラクターが作成したオブジェクトを返すよりも前に executor は呼び出されます)。
0519デフォルトの名無しさん
垢版 |
2020/09/07(月) 17:09:51.23ID:3uGG3SyO
>>515
コールスタックが空にならないと、各種キューに入ってる処理は実行されない

最初にconsole.log(“6”);まで処理したらスタックが空になる
その状態でsetTimeoutのタイマーが発動してキューにコールバック関数が入る
スタックが空なのでキューの1番目にあるsetTimeoutのコールバック関数がスタックに積まれて呼び出される
この関数がreturnするまではスタックは空にならないので
それまではキューに入った処理を実行するタイミングはない

console.log(“3”);まで実行してreturnしたらスタックが空になるので
その後、各種キューに入ってる処理があれば実行される
0520デフォルトの名無しさん
垢版 |
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 の分は表示されないんですが、どういった
理由なのでしょう。
0521デフォルトの名無しさん
垢版 |
2020/09/07(月) 17:33:56.06ID:Egt+Qwmp
お前はもう死んでいる
0522デフォルトの名無しさん
垢版 |
2020/09/07(月) 17:39:40.90ID:UUesL9I9
最初にresolve()した時点でそのPromiseの値は確定するから
つかスレに書き込む暇があるならドキュメントでも何でもいいから学習してPromiseがどういうもんか理解してから試せよ
Promiseってのは「将来確定する"値"」を表現するもんなんだよ
0523デフォルトの名無しさん
垢版 |
2020/09/07(月) 17:52:24.52ID:neZOTIA1
一旦解決したPromiseを再度変更出来たらそれは改竄と呼ぶべきだな
reject(111);
resolve(222);
reject(333);
これは成功したのか失敗したのかどっちよ?
0525デフォルトの名無しさん
垢版 |
2020/09/07(月) 18:08:35.44ID:UUesL9I9
最初のreject()で失敗が確定する
Promiseの状態はpending→settledと変わる
settledにはfulfilledとfailedがある
resolve()でfulfilled、reject()でfailedになる
0526デフォルトの名無しさん
垢版 |
2020/09/08(火) 00:01:18.48ID:8muSUg7S
nodeの非同期を同期的にやりたい時のコードって
promise async await
resolve thenが複雑に入り組んで
意図した動きになった時はめっちゃ過剰なコードになるよね
精神的にヘトヘトに疲れて 清書する元気も起きん
promiseやresolve変数がたくさん生成しまくって
名前つけるのもめんどうになって
p1とかr3みたいなのが沢山できてる
特にforループの中に非同期使うときは地獄

早くmysqlを同期的にクエリ投げられる
ライブラリ出してください。何でもしますから。
0529デフォルトの名無しさん
垢版 |
2020/09/08(火) 12:00:40.54ID:gglleEZ2
ライブラリは需要があればとっくに作られてる
今現在無いのはつまりそういうことだ
0530デフォルトの名無しさん
垢版 |
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();

と書ける
0531デフォルトの名無しさん
垢版 |
2020/09/08(火) 13:42:27.36ID:8muSUg7S
select文を投げるのは
selectの結果が欲しいから投げる訳であって
結果が取得できる前に
後続のコードに勝手に動かれたら困るのは
当たり前だよなあ?
DBアクセスで非同期って何がメリットが
あるのか分からない。

それにnodeの概念はバカの新人に言葉で説明しにくいんだよ
あいつぜってー非同期とか理解出来ねえぞ
0534デフォルトの名無しさん
垢版 |
2020/09/08(火) 14:51:08.13ID:QV2EnsJl
お前の場合はMySQL一つしか使わないのが当たり前かもしれないが世の中にはシャードされた複数のMySQLにアクセスしたりキャッシュのRedisにアクセスしたり検索エンジンのelasticsearchにアクセスしたりいろんなことをしなきゃいけないアプリがあったりするわけ
Nodeではこれらは非同期だから特別なことをしなくてもたやすく並行アクセスできる
同期で並行アクセスしようとすると複数スレッド使って待ち合わせすることになるから非同期より簡単にできるわけではない
0535デフォルトの名無しさん
垢版 |
2020/09/08(火) 16:00:24.51ID:8muSUg7S
>>534
ああ、アクセスするのは簡単やと思うわ
問題はその結果の始末を付けるのが大変だと思うわ
なんかいい書籍あるか?
0536デフォルトの名無しさん
垢版 |
2020/09/08(火) 17:40:30.89ID:Qj0BclxS
本当に本当にダメなヤツだなぁ(呆れ)
アクセスってのは接続して要求を投げて結果を受け取ってそれを処理して接続を閉じるまでの一連に決まってるだろ
>>530の例だって後始末まで書いてあるのに全然大変じゃないだろが
0541デフォルトの名無しさん
垢版 |
2020/09/09(水) 21:03:51.38ID:OFM+73CL
分からないだけならともかく延々と自分以外を貶めつつ無能を晒してたからなぁ
0542デフォルトの名無しさん
垢版 |
2020/09/09(水) 21:12:34.50ID:XGuez22g
それな

× node.js が悪い
× 非同期が悪い
× promise が悪い
× async/awaitが悪い
× 新人がバカ
○ ID:8muSUg7S がバカ

こうだからな
0543デフォルトの名無しさん
垢版 |
2020/09/10(木) 14:55:06.91ID:rLZBXCmM
グレたωωω
0544デフォルトの名無しさん
垢版 |
2020/09/10(木) 19:56:10.61ID:FWP0gZB+
clusterでマルチプロセスしようとしたんだけど
「EADDRINUSE(ポートが既に使われている)」
エラーがどうしても出てしまいます。
もちろん既に稼働しているnodeはなく、
fork元のapp.jsでlistenしているのと同じポート
子プロセスでまたbindしようとして失敗しているようで
子プロセスは外部からリクエストを受けるような
ものではなく、重い処理をコア分散させて並列処理したいだけです
子プロセスにポート割り当てが必要な理由がよく分かりませんが
恐らく親プロセスと子プロセス間の通信
とかに使うんでしょうか?
子プロセスのポート割り当て回避か、
親プロセスと別ポートを割り当てる方法はありますか?
0545デフォルトの名無しさん
垢版 |
2020/09/10(木) 20:18:09.02ID:VafdMbGz
> 子プロセスは外部からリクエストを受けるようなものではなく

それならclusterモジュールは必要なくね
clustetは複数のプロセスを使って大量のリクエストを捌くためのもの
ただの子プロセスならchild_processのメソッドを使う
0546デフォルトの名無しさん
垢版 |
2020/09/10(木) 20:21:53.78ID:C+K2oJgr
>>545
なるほど、助かりました
じつはworker_threadsも試してみて同じ
エラー出たので
child_processが正解でしたか
これだとポートは関係ない?
0549デフォルトの名無しさん
垢版 |
2020/09/14(月) 20:42:48.98ID:JdQogpR1
>>544 の者ですが
今日これをデバッグしてました。
clusterでもwoker_threadsfでも
child_processでも
「EADDRINUSE」が発生しました

発生するタイミングは子プロセスを生成した時でも
なく
子プロセスでMySQLに対しのコネクション確立時でもなく
確立したDBコネクションからクエリを投げるコード
を実行する時に発生しますが
なぜこのタイミングなのか分かりません

ここで気になったのが
nodeでフロントユーザーに対し
80番ポートをlistenしていて
nodeがローカルのMySQLにアクセスする時
nodeのクライアントポートはフロントと
おなじ80を使うのでしょうか?
それとも別のランダムポートを取得してきて使うのでしょうか?
0550デフォルトの名無しさん
垢版 |
2020/09/14(月) 20:55:49.60ID:AayaioGL
説明と全然違う事象じゃねーの
せめてエラーメッセージとスタックトレース貼れ
0551デフォルトの名無しさん
垢版 |
2020/09/14(月) 20:55:58.86ID:JdQogpR1
続きですか
もう少し調べてみると
「EADDRINUSE」が発生するタイミングは
MySQLに対しコネクション確立後
SQLを投げる時で間違いないと思いますが、
エラーのスタックとレースを見ても
何かのハンドラから駆動されており自分の書いたコードでは
ありません。
nodeかexpressかmysqlモジュールのハンドラ
だと思います

子プロセスはローカルのMySQLに対して
接続して読み書きするだけで
フロントとのやり取りは一切ありませんが

生成元の親プロセスはExpressのapp.js
で立ち上げてるwebアプリです
0552デフォルトの名無しさん
垢版 |
2020/09/14(月) 20:56:11.94ID:JdQogpR1
不思議なのが子プロセスで
mysqlとコネクション確立までは失敗せずに
動作し、SQLを投げる段階で
なぜか大元の「app.js」をもう1つ起動しようとしており
app.jsはもう既に起動してるので、
listenポート重複により上記のエラーが発生するわけです
暫定対応で動くようにはなりましたが、
なぜローカルのDBアクセス時にapp.js実行する
動きをするのかの原因がまだ分かっていません

webとは関係ないはずの子プロセスのファイルを
単体でコマンドで実行した場合も
Expressのベースディレクトリにある
「app.js」が実行されていることが分かりました。
自身のコードではこのようなことをしてないので
フレームワークかモジュールの内部処理だと思いますが、
知っている方がいましたら教えてください。
0553デフォルトの名無しさん
垢版 |
2020/09/14(月) 20:57:39.11ID:JdQogpR1
>>550
すみません、もう帰宅してしまったのと
機密事項で怒られるのでスタックトレースは貼れません
0554デフォルトの名無しさん
垢版 |
2020/09/14(月) 21:14:49.11ID:AayaioGL
> 単体でコマンドで実行した場合も
> Expressのベースディレクトリにある
> 「app.js」が実行されていることが分かりました。

clusterも何も関係ねーじゃんwww
断言するがフレームワークもモジュールもmysqlも関係なくてお前のバグだから真面目に仕事しろ
子プロセスから再現に関係ない部分を削除しまくって最小限のここで見せられるコードになるまで書き込まなくていいよ
0556デフォルトの名無しさん
垢版 |
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
を試しましたが、途中で警告が出たりして、結局、元のエラーは直りません。
直す方法はありますでしょうか?
0557デフォルトの名無しさん
垢版 |
2020/10/17(土) 18:39:14.64ID:cX3MrjsP
>>556
結論的には、

$ npm install -g fs-extra

$ set NODE_PATH=%AppData%\npm\node_modules

としてから、

node xxxx.js

とすると直りました。
0559デフォルトの名無しさん
垢版 |
2020/10/19(月) 16:19:09.43ID:faSV5MEm
# Fatal error in , line 0
とか見慣れぬエラーで落ちててビビって調べたらv14のバグか
0562デフォルトの名無しさん
垢版 |
2020/10/25(日) 04:23:13.46ID:Xs0QdE0/
mjsにしないといけないから何なんだよ気になるだろ…
因みにpackage.json弄れば.jsをESM扱いにはできる
0563デフォルトの名無しさん
垢版 |
2020/10/25(日) 13:32:05.91ID:xG/xcmJA
node v15にしたからmjsにして requireを全部importに変更したらpuppeteerがimportできなくてまたrequireに戻した
0564デフォルトの名無しさん
垢版 |
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
0566デフォルトの名無しさん
垢版 |
2020/10/26(月) 14:12:32.65ID:AP4vuhmG
>>565
教えて頂いた方法で取り除かれていることが確認できました。
公開されているソースを確認したら戻り値を受け取るようになっていました。
今後はソースも確認するようにします。
ありがとうございました。
0567デフォルトの名無しさん
垢版 |
2020/10/26(月) 14:44:15.69ID:/aZJ5myY
その前にJavaScriptの勉強をちゃんとすべきでは。。。
JSの文字列は不変って知ってればstriptagsの使い方を知らなくても>>564の書き方じゃダメってわかったはず
0574デフォルトの名無しさん
垢版 |
2020/10/29(木) 10:07:34.55ID:D91L/a15
俺も文法的にはPHPよりもjavascriptの方が好みなので、できれば移行したいんだけど、
URL単位で小物サービスを作る用途がメインなので今でもPHPを使ってしまう。
なんか、node.jsはCGI的に使うのはナンセンスという雰囲気があって、
でも、たまにしか使わない小物サービス毎にポート番号を消費したくない、
と思うと移行できない。
こんな俺にもおすすめなnode.jsの使い方ってある?
0577デフォルトの名無しさん
垢版 |
2020/10/29(木) 16:31:46.11ID:Phiv6uZl
>>574
極々普通にNodeでもルーターから振り分ければいいと思う
PHPだってサービスごとにhttpd立てているわけではないっしょ
0579デフォルトの名無しさん
垢版 |
2020/10/29(木) 23:24:45.00ID:D91L/a15
>>577
ありがとう、それだ!俺に必要だったものは。
とりあえず、expressを入れればいいのかな?
ちょっとやってみる。
>>578
俺にはレベル高すぎ(笑)
0580デフォルトの名無しさん
垢版 |
2020/11/07(土) 11:58:54.69ID:fULQIOig
npm-run-all で複数のnpm scriptを連続で実行したいんだが、scriptのどれか一つでも
0以外のステータスを返すとそこで処理をやめてしまうのをどうにかできないのかな。

大抵の場合はその仕様でもいいんだけど、たまに、エラーだろうがなんだろうがとにかく
処理しきってしまいたい場合がある。
0583デフォルトの名無しさん
垢版 |
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じゃなくてエラー画面が出るのが愛嬌だけど。
0584デフォルトの名無しさん
垢版 |
2020/11/18(水) 14:56:07.27ID:7Ekft4aV
おめーら的にdenoってどうすか?
使ったことなさそうだけど
0585デフォルトの名無しさん
垢版 |
2020/11/18(水) 19:28:04.93ID:Zh0DQZnV
ほんのちょっとしか触ってないけど面倒くささが無い
npmライブラリが使えないけど init だの install だの package.json だの tsc だのやったりいじったりしないで済むから手軽に感じた
時間が経ってライブラリが充実してくれれば普通に使いやすい環境だと思う
0586デフォルトの名無しさん
垢版 |
2020/11/18(水) 20:11:49.14ID:7Ekft4aV
期待したいよな
開発者はイケメンだし
0587デフォルトの名無しさん
垢版 |
2020/11/18(水) 21:25:12.52ID:v8HWKopj
npmが使えないからエコシステムが育つまで様子見だな。
@types以前のTypeScriptみたいな。
0588デフォルトの名無しさん
垢版 |
2020/11/19(木) 01:51:43.98ID:/aqa7r+0
io.jsのように良い部分はNode.js側に取り込んでほしいね
最近は複雑さばかりが増しているし
0589デフォルトの名無しさん
垢版 |
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
0590デフォルトの名無しさん
垢版 |
2020/11/21(土) 23:08:26.52ID:jQLdetle
Ruby のBundler なら、プロジェクトルートに移動してから、

Gemfile にバージョン指定を書いて、
bundle install とコマンド入力するけど
0592デフォルトの名無しさん
垢版 |
2020/11/22(日) 00:38:30.85ID:gYBzGuNC
expressは当時koaに移行するのかと思ってたけど結局どっちも開発続いてるのな
0594デフォルトの名無しさん
垢版 |
2020/11/22(日) 00:46:23.77ID:7U8BOc5J
>>591
ありがとう。やってみたけどダメだった。
途中の表示にはexpress@5.0.0-alpha.8って出てるのに…
なんか晒すべき設定ってある?

$ npm init --y
$ npm i express@next
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.
+ express@5.0.0-alpha.8
added 57 packages from 39 contributors and audited 57 packages in 4.105s
found 0 vulnerabilities
$ npm view express version
4.17.1
0595デフォルトの名無しさん
垢版 |
2020/11/22(日) 01:12:26.72ID:uIWU98XF
viewコマンドはインストールされたものじゃなくて公開されてるパッケージの情報見るものよ
0596デフォルトの名無しさん
垢版 |
2020/11/22(日) 01:15:05.72ID:nMBoVd/n
>>594
npm viewはレジストリの情報を表示するものでローカルにインストールされたものとは無関係だからだなw
npm ls express
0597デフォルトの名無しさん
垢版 |
2020/11/22(日) 01:19:23.91ID:ujQ9d+0r
>>594
インストールの時は
$ npm i express@next
って打ってるくせに
なんで
$ npm view express version
って打つわけ?
それなら
$ npm view express@next version
でしょうが…
0598デフォルトの名無しさん
垢版 |
2020/11/22(日) 09:31:06.57ID:7U8BOc5J
>>595-597
ありがとう。バージョン確認方法の方が間違ってたのか。
あぶねえ。パッケージ側の情報で確認してたら、何を試しても永遠に出来ないって言ってるところだったw
改めて確認したら、ちゃんと5.xが入ってた。
お騒がせしました。

$ npm ls express | grep express
└── express@5.0.0-alpha.8
0599デフォルトの名無しさん
垢版 |
2020/11/23(月) 12:57:39.74ID:3jYl7MgH
node.jsのドキュメントや書籍等で、セキュリティー対策を考慮して書かれているものがあれば教えてください
0601デフォルトの名無しさん
垢版 |
2021/01/01(金) 19:21:03.31ID:/+4IUuLb
さくらVPSとかのlinuxサーバにwebアプリをデプロイするベターな手順ってなんかありますか

単純に考えれば、既存のサーバ中のプロジェクトフォルダを消して gitから新しくpullしてnpm ciすればいいはずなんだが
・毎回node_modulesを作るのは時間がかかるから、package-lock.json に変更が無い場合はそのまま引き継ぎたい
・ローカルの設定、ログフォルダといった、消したくないフォルダがある
からちょっと面倒でなんとかしたい

nodejs deployment tool とかで検索しても、すぐ自社のSaasに誘導しようとして
素のEC2的なlinuxマシンでの方法が分からなかった。
0603デフォルトの名無しさん
垢版 |
2021/01/02(土) 04:25:18.76ID:VICQRi/P
>>602
ありがとうございます。やはりdockerか。

docker使えない自分はこんな感じでやっていました。
>・毎回node_modulesを作るのは時間がかかるから、package-lock.json に変更が無い場合はそのまま引き継ぎたい
git fetchした後git diff HEAD..origin/master -- package.json で変更があるか確認出来る。
変更があった場合のみnpm installすればいい。

>・ローカルの設定、ログフォルダといった、消したくないフォルダがある
ログフォルダや設定ファイルは.gitignoreしてあるはずだから、気にせず毎回git merge origin/master しても全く問題ないはず。

深く考えすぎてて、普通に手を動かしたら違和感なくデプロイ出来ました。
0604デフォルトの名無しさん
垢版 |
2021/03/01(月) 09:14:19.43ID:vtDgs//2
for文について質問させてください。

const execTime = new Date(2021,0,1);
for (
const ix = new Date(execTime.getTime());
ix.getMonth() === execTime.getMonth();
ix.setDate(ix.getDate() + 1)
) {
console.log(ix);
}

これを実行すると、以下のようになります。

2020-12-31T15:00:00.000Z
...
2021-01-30T15:00:00.000Z

なぜ1月1日〜1月31日にならないのでしょうか?
どのように書けばいいのか教えてください。

node -v
v15.9.0
レスを投稿する


ニューススポーツなんでも実況