node.jsバージョン管理
Jest実行しようとしたらnode.jsのバージョンが低いらしく、エラーになったのでバージョンを上げる方法を検索したらn
というものがあると知ったので試してみた。
$ node -v
v10.19.0
$ sudo npm install -g n
$ sudo n stable
$ node -v
v10.19.0
$ hash -r
$ node -v
v16.15.0
POSTS
Jest実行しようとしたらnode.jsのバージョンが低いらしく、エラーになったのでバージョンを上げる方法を検索したらn
というものがあると知ったので試してみた。
$ node -v
v10.19.0
$ sudo npm install -g n
$ sudo n stable
$ node -v
v10.19.0
$ hash -r
$ node -v
v16.15.0
テストのために関数exportしないといけないの、チョット気持ち悪いので、解決策を探ってみる。
jhnns/rewire: Easy monkey-patching for node.js unit testsが一般的らしい。
$ npm install -D rewire @types/rewire
テストコードのimportを修正
import rewire from 'rewire';
const __local__ = rewire('./mdmml.ts');
const atoi = __local__.__get__('atoi')
テスト実行
$ npm test
> mdmml_js@1.0.0 test
> jest
FAIL src/mdmml.test.ts
● Test suite failed to run
/home/umemak/workspace/mdmml_js/src/mdmml.ts:8
Tracks: Track[] = [];
SyntaxError: Unexpected identifier
at Object.load (node_modules/rewire/lib/moduleEnv.js:57:18)
at internalRewire (node_modules/rewire/lib/rewire.js:49:15)
at rewire (node_modules/rewire/lib/index.js:11:12)
Test Suites: 1 failed, 1 total
Tests: 0 total
Snapshots: 0 total
Time: 1.01 s
Ran all test suites.
関係ないところでエラーになるようになってしまった。。
Read more昨日は、TypeScript環境構築に手間をかけたくないという想いでParcelを試してみたところ、エラーで途方に暮れていた。
今日は、古き良きwebpackを試した。
参考にしたページはこちら
$ npm init -y
$ npm i -D webpack webpack-cli typescript ts-loader
$ code package.json
$ code tsconfig.json
$ code webpack.config.js
$ code src/main.ts
$ npm run build
> mdmml_js@1.0.0 build /home/umemak/workspace/mdmml_js
> webpack
asset main.js 1.2 KiB [emitted] (name: main)
./src/main.ts 14 bytes [built] [code generated]
webpack 5.72.0 compiled successfully in 1126 ms
できた。 楽をしようとしてかえって遠回りになった経験だった。
Read more久しぶりにJavaScript(TypeScript)を書こうとしたら、何から始めてよいかわからなくなっていた。
あまり環境構築に手間をかけたくなかったので、parcel-bundler/parcel: The zero configuration build tool for the web. 📦🚀を使ってみた。
Building a web app with Parcelを見ながら
npm init
npm install --save-dev parcel
src/index.htmlを作って、
npx parcel src/index.html
/home/umemak/workspace/mdmml_js/node_modules/@parcel/core/lib/Parcel.js:150
#requestTracker
^
SyntaxError: Invalid or unexpected token
at new Script (vm.js:83:7)
at NativeCompileCache._moduleCompile (/home/umemak/workspace/mdmml_js/node_modules/v8-compile-cache/v8-compile-cache.js:240:18)
at Module._compile (/home/umemak/workspace/mdmml_js/node_modules/v8-compile-cache/v8-compile-cache.js:184:36)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (/home/umemak/workspace/mdmml_js/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
at Object.<anonymous> (/home/umemak/workspace/mdmml_js/node_modules/@parcel/core/lib/index.js:81:39)
/home/umemak/workspace/mdmml_js/node_modules/@parcel/logger/lib/Logger.js:41
#logEmitter
^
SyntaxError: Invalid or unexpected token
at new Script (vm.js:83:7)
at NativeCompileCache._moduleCompile (/home/umemak/workspace/mdmml_js/node_modules/v8-compile-cache/v8-compile-cache.js:240:18)
at Module._compile (/home/umemak/workspace/mdmml_js/node_modules/v8-compile-cache/v8-compile-cache.js:184:36)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at _logger (/home/umemak/workspace/mdmml_js/node_modules/parcel/lib/cli.js:54:16)
うーん。。めんどくさい。。
Read more昨日のcifkao/html-midi-player: 🎹 Play and display MIDI files on the webの使い方見ようとして、magenta-js/music at master · magenta/magenta-jsを使っているのを知った。
Magentaは出始めのときにそんなのがあるのか、って思って深くは見ていなかったのだけど、今度はちゃんと使ってみようかな。
html-midi-playerではSMFファイルを渡して初期化しているところを、 textboxに書かれたマークダウンをSMFに変換してblobToNoteSequenceに渡せばよいのかな。 JavaScriptでテンポラリファイルとか作れるんだっけ・・?それなら無改造で行けそうだけど。
Read moreSteam:Screeps: ArenaのDemo版をやってみた。
チュートリアルの途中までやったけど、普通に何か自分で開発してたほうが良いかな。
ノートPCで1画面でやってると、VS CodeとScreepsの行き来が面倒だったので、エディタは内蔵されていたほうが良いと思った。