blog.euxn.me

node の child_processexec() を別のバージョンで動かす

2018-11-20 Tue.

プログラムを実行するプログラムを新しいバージョンの node で書いたものの、実行対象のコードは最新のバージョンでは動かない、などよくあると思います(ない)

1const { exec } = require('child_process')
2const { promisify } = require('util')
3
4const execAsync = promisify(exec)
5
6const cwd = 'path/to/code'
7
8async function main() {
9 await execAsync('PATH=~/.nvm/versions/node/v6.14.4/bin:$PATH npm test', { cwd })
10 .catch(() => execAsync('PATH=~/.nvm/versions/node/v8.12.0/bin:$PATH npm test', { cwd })
11}
12
13main().catch(console.error)

$ nvm use でもできますが、上記の方が早いです。

他に良い方法があったら教えてください。