みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

npm install -g mermaid-filterでエラー

はじめに

pandocの環境を再構築するために、mermaid-filterをインストールしようとしたら次のエラーが出てハマった。

$ sudo npm install -g mermaid-filter
/usr/local/bin/mermaid-filter -> /usr/local/lib/node_modules/mermaid-filter/index.js

> puppeteer@1.14.0 install /usr/local/lib/node_modules/mermaid-filter/node_modules/puppeteer
> node install.js

ERROR: Failed to download Chromium r641577! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
{ Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/mermaid-filter/node_modules/puppeteer/.local-chromium'
  -- ASYNC --
    at BrowserFetcher.<anonymous> (/usr/local/lib/node_modules/mermaid-filter/node_modules/puppeteer/lib/helper.js:110:27)
    at Object.<anonymous> (/usr/local/lib/node_modules/mermaid-filter/node_modules/puppeteer/install.js:64:16)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
  errno: -13,
  code: 'EACCES',
  syscall: 'mkdir',
  path:
   '/usr/local/lib/node_modules/mermaid-filter/node_modules/puppeteer/.local-chromium' }
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! puppeteer@1.14.0 install: `node install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the puppeteer@1.14.0 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

解決方法

どうもchromiumブラウザをダンロードしてこようとしているようだが本来は特に必要ない。 ダンロードをスキップする場合は次の環境変数を設定しろというメッセージが出た。

Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.

いろいろ調べて次のようにしたが状況は変わらない。

$ npm config set PUPPETEER_SKIP_CHROMIUM_DOWNLOAD TRUE -g

ここの情報をもとに次のようにしたところ、エラーが回避できた。

$ sudo npm config set puppeteer_skip_chromium_download true -g

小文字なんだってさ。