shonen.hateblo.jp

やったこと,しらべたことを書く.

nodejsをインストールしようとしたら壊れてしまったので無理やり直した

ローコスト記事。ごめんなさい。

環境

ubuntu 16.04

発生した現象

$ sudo apt install nodejs npm
$ sudo apt install nodejs-legacy
$ npm -v
/usr/local/lib/node_modules/npm/bin/npm-cli.js:84
      let notifier = require('update-notifier')({pkg})
      ^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:442:10)
    at startup (node.js:136:18)
    at node.js:966:3

変な言語バージョン管理ツールを導入したら発生するような気がする。

状況確認

$ which node
/usr/bin/node
$ which nodejs
/usr/bin/nodejs

🤔

$ sudo apt remove nodejs npm
$ sudo apt install nodejs
$ nodejs -v
v4.2.6

🤔🤔🤔

この後にもう一度 which とか確認操作したと思うんですが、ログ撮ってなかった…

解決策

公式サイトからバイナリをダウンロードして bin の中身を /usr/local/bin/ に配置。

node-v10.16.0-linux-x64.tar.xz がダウンロードしたファイルです。

$ tar Jxfv node-v10.16.0-linux-x64.tar.xz 
$ cd node-v10.16.0-linux-x64/bin
$ sudo cp * /usr/local/bin/
$ npm -v
6.9.0
$ node -v
v10.16.0

apt upgrade 出来ないじゃんと思ったけど npm でアップグレード出来るから要らない…要らないのか?🤔