プログラム中の改行の扱いでたまに OS の EOL を使ってるのを見かける
Node.js だとこの値
const os = require("os")
console.log(os.EOL)
Linux だと \n で Windows だと \r\n になる
これを使われると OS 依存で実行結果が変わってしまう
出力時の改行だけならあとから変換できるのでまだいいけど パース時に使われると全然違う結果になったりエラーになったりするのですごく困る
最近では Linux/Windows 間でファイルを受け渡すことは多く OS の標準と異なる EOL のファイルを扱うことは少なくない
特に Windows では Windows で実行したり WSL で実行したりする
これで結果が変わるなんて迷惑でしかない
OS 依存なデータを使わずにアプリケーション側で固定すべき
できればパース時は \r,\n,\r\n 全部に対応して 書き込み時は \n としてほしい
Node.js でライブラリの場合は os.EOL が書き換え可能なので実行前に書き換えて対処できなくもない
const os = require("os")
Object.defineProperty(os, "EOL", { get() { return "\n" } })
// 本来の処理
require("./main.js")