【CentOS7】 ビルドの続き (Node.js)

https://qiita.com/senou/items/d939601e32c0005ebfe3

[1] 昨日の「yarn dev」ができないエラーから進歩

# [1] 全てのパッケージと依存関係をインストール
$ yarn
[vagrant@localhost (プロジェクト名)]$ yarn dev
yarn run v1.22.4
$ cross-env NODE_ENV=development nuxt-ts

 WARN  No .env file found in /home/vagrant/projects_VM-0815/covid19.                        nuxt:dotenv 21:25:36

start Loading module                                                                      nuxt-purgecss 21:25:37
ℹ PurgeCSS is not enabled because you are in dev mode                                     nuxt-purgecss 21:25:37

   ╭─────────────────────────────────────────────╮
   │                                             │
   │   Nuxt.js v2.11.0                           │
   │   Running in development mode (universal)   │
   │                                             │
   │   Listening on: http://localhost:3000/      │
   │                                             │
   ╰─────────────────────────────────────────────╯

ℹ Preparing project for development                                                                     21:25:43
ℹ Initial build may take a while                                                                        21:25:43
✔ Builder initialized                                                                                   21:25:43
✔ Nuxt files generated                                                                                  21:25:48
ℹ Starting type checking service...                                                     nuxt:typescript 21:25:52
ℹ Using 1 worker with 2048MB memory limit                                               nuxt:typescript 21:25:52

● Client █████████████████████████ building (35%) 211/234 modules 23 active
 babel-loader › vue-loader › .nuxt/components/nuxt-loading.vue

● Server █████████████████████████ building (24%) 118/126 modules 8 active
 ...› vue-loader › postcss-loader › vue-loader › .nuxt/components/nuxt-loading.vue


 ERROR  ## There is an issue with node-fibers ##                                                        21:26:22
`/home/vagrant/projects_VM-0815/covid19/node_modules/fibers/bin/linux-x64-67-glibc/fibers.node` is missing.

Try running this to fix the issue: /usr/bin/node /home/vagrant/projects_VM-0815/covid19/node_modules/fibers/build



● Client █████████████████████████ building (35%) 211/234 modules 23 active
 babel-loader › vue-loader › .nuxt/components/nuxt-loading.vue

● Server █████████████████████████ building (24%) 121/138 modules 17 active
 ...ue-loader › postcss-loader › vue-loader › .nuxt/components/nuxt-build-indicator.vue


 ERROR  ## There is an issue with node-fibers ##                                                        21:26:22
`/home/vagrant/projects_VM-0815/covid19/node_modules/fibers/bin/linux-x64-67-glibc/fibers.node` is missing.

Try running this to fix the issue: /usr/bin/node /home/vagrant/projects_VM-0815/covid19/node_modules/fibers/build


 ERROR  Error: Cannot find module '/home/vagrant/projects_VM-0815/covid19/node_modules/fibers/bin/linux-x64-67-glibc/fibers'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:668:15)
    at Function.Module._load (internal/modules/cjs/loader.js:591:27)

まず、次のエラー文から。

 ERROR  ## There is an issue with node-fibers ##                                                        21:26:22
`/home/vagrant/projects_VM-0815/covid19/node_modules/fibers/bin/linux-x64-67-glibc/fibers.node` is missing.

Try running this to fix the issue: /usr/bin/node /home/vagrant/projects_VM-0815/covid19/node_modules/fibers/build

=> fibers.nodeがインストールされていないのでビルドに失敗

参考資料

https://www.npmjs.com/package/fibers

Fibers, sometimes called coroutines, are a powerful tool which expose an API to jump between multiple call stacks from within a single thread. 
This can be useful to make code written for a synchronous library play nicely in an asynchronous environment.

[2] fibersのインストール

$ yarn add fibers

[vagrant@localhost covid19]$ yarn install fibers
yarn install v1.22.4
error `install` has been replaced with `add` to add new dependencies. Run "yarn add fibers" instead.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
[vagrant@localhost covid19]$ yarn add fibers
yarn add v1.22.4
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
info fsevents@2.1.2: The platform "linux" is incompatible with this module.
info "fsevents@2.1.2" is an optional dependency and failed compatibility check. Excluding it from installation.
info fsevents@1.2.11: The platform "linux" is incompatible with this module.
info "fsevents@1.2.11" is an optional dependency and failed compatibility check. Excluding it from installation.
[4/5] Linking dependencies...
warning "babel-jest > babel-preset-jest > @babel/plugin-syntax-object-rest-spread@7.8.3" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "vue-jest > @babel/plugin-transform-modules-commonjs@7.8.3" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "vue-property-decorator > vue-class-component@7.2.3" has unmet peer dependency "vue@^2.0.0".
warning "@nuxtjs/eslint-config-typescript > @typescript-eslint/eslint-plugin > tsutils@3.17.1" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta".
warning "@nuxtjs/vuetify > sass-loader@8.0.2" has unmet peer dependency "webpack@^4.36.0 || ^5.0.0".
warning "@nuxtjs/vuetify > vuetify@2.2.15" has unmet peer dependency "vue@^2.6.4".
warning "@nuxtjs/vuetify > vuetify-loader@1.4.3" has unmet peer dependency "vue-template-compiler@^2.5.0".
warning "@nuxtjs/vuetify > vuetify-loader@1.4.3" has unmet peer dependency "webpack@^4.0.0".
warning " > @vue/test-utils@1.0.0-beta.31" has unmet peer dependency "vue@2.x".
warning " > @vue/test-utils@1.0.0-beta.31" has unmet peer dependency "vue-template-compiler@^2.x".
warning " > babel-jest@24.9.0" has unmet peer dependency "@babel/core@^7.0.0".
warning "babel-jest > babel-preset-jest@24.9.0" has unmet peer dependency "@babel/core@^7.0.0".
warning "nuxt-purgecss > purgecss-webpack-plugin@1.6.0" has unmet peer dependency "webpack@^4 || ^3".
warning " > vue-jest@4.0.0-beta.2" has unmet peer dependency "@babel/core@7.x".
warning " > vue-jest@4.0.0-beta.2" has unmet peer dependency "vue@^2.x".
warning " > vue-jest@4.0.0-beta.2" has unmet peer dependency "vue-template-compiler@^2.x".
warning "vue-jest > ts-jest@23.10.5" has incorrect peer dependency "jest@>=22 <24".
[5/5] Building fresh packages...
[6/6] ⠠ nuxt
[-/6] ⠠ waiting...
[3/6] ⠠ fibers
[-/6] ⠠ waiting...
error /home/vagrant/projects_VM-0815/covid19/node_modules/fibers: Command failed.
Exit code: 127
Command: node build.js || nodejs build.js
Arguments: 
Directory: /home/vagrant/projects_VM-0815/covid19/node_modules/fibers
Output:
gyp info it worked if it ends with ok
gyp info using node-gyp@3.8.0
gyp info using node@11.15.0 | linux | x64
gyp info spawn /usr/bin/python2
gyp info spawn args [ '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/vagrant/projects_VM-0815/covid19/node_modules/fibers/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/vagrant/.node-gyp/11.15.0/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/vagrant/.node-gyp/11.15.0',
gyp info spawn args   '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/home/vagrant/.node-gyp/11.15.0/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/vagrant/projects_VM-0815/covid19/node_modules/fibers',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: ディレクトリ `/home/vagrant/projects_VM-0815/covid19/node_modules/fibers/build' に入ります
  CXX(target) Release/obj.target/fibers/src/fibers.o
make: g++: コマンドが見つかりませんでした
make: *** [Release/obj.target/fibers/src/fibers.o] エラー 127
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack     at ChildProcess.emit (events.js:193:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:255:12)
gyp ERR! System Linux 3.10.0-862.11.6.el7.x86_64
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release"
gyp ERR! cwd /home/vagrant/projects_VM-0815/covid19/node_modules/fibers
gyp ERR! node -v v11.15.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok 
make: ディレクトリ `/home/vagrant/projects_VM-0815/covid19/node_modules/fibers/build' から出ます
node-gyp exited with code: 1
Please make sure you are using a supported platform and node version. If you
would like to compile fibers on this machine please make sure you have setup your
build environment--
Windows + OS X instructions here: https://github.com/nodejs/node-gyp
Ubuntu users please run: `sudo apt-get install g++ build-essential`




[vagrant@localhost covid19]$ 

[3] g++がインストールされていない

sudo apt-get install g++ build-essential

しかし、g++ build-essentialの前に、node-gypを。

[理由]

Please make sure you are using a supported platform and node version. If you
would like to compile fibers on this machine please make sure you have setup your
build environment--

=> fibersをコンパイルするなら、ビルド環境を見直してください。
[vagrant@localhost covid19]$ yarn add node-gyp

同じく、g++ build-essentialが入ってないと警告されたので、観念してyumで入れよう

[4] yumでg++ build-essentialを。

$ sudo yum install g++ build-essential

[vagrant@localhost covid19]$ yum install g++ build-essential
読み込んだプラグイン:fastestmirror
このコマンドを実行するには root である必要があります。
[vagrant@localhost covid19]$ sudo yum install g++ build-essential
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                       | 9.3 kB  00:00:00     
 * base: ftp-srv2.kddilabs.jp
 * epel: nrt.edge.kernel.org
 * extras: ftp-srv2.kddilabs.jp
 * remi-safe: mirror.cedia.org.ec
 * updates: ftp-srv2.kddilabs.jp
base                                                                                       | 3.6 kB  00:00:00     
epel                                                                                       | 5.3 kB  00:00:00     
extras                                                                                     | 2.9 kB  00:00:00     
mysql-connectors-community                                                                 | 2.5 kB  00:00:00     
mysql-tools-community                                                                      | 2.5 kB  00:00:00     
mysql56-community                                                                          | 2.5 kB  00:00:00     
nodesource                                                                                 | 2.5 kB  00:00:00     
remi-safe                                                                                  | 3.0 kB  00:00:00     
updates                                                                                    | 2.9 kB  00:00:00     
(1/4): epel/x86_64/group_gz                                                                |  95 kB  00:00:00     
(2/4): epel/x86_64/primary_db                                                              | 6.7 MB  00:00:04     
(3/4): epel/x86_64/updateinfo                                                              | 1.0 MB  00:00:08     
(4/4): remi-safe/primary_db                                                                | 1.7 MB  00:00:25     
パッケージ g++ は利用できません。
パッケージ build-essential は利用できません。
エラー: 何もしません
[vagrant@localhost covid19]$

???

g++とは?

[概説] http://www.ced.is.utsunomiya-u.ac.jp/lecture/2006/common/vs2005/programming_system.php

[ネクストステップとしては?] https://kamocyc.hatenablog.com/entry/2020/01/23/075331

まず,gccとg++の違い.これはC用とC++用の違いである.

gccは,GNU C Compilerの意味
g++は,GNU C++ Compilerの意味

[5] 代替案

https://kaworu.jpn.org/cpp/g++%E3%82%92CentOS%E3%81%B8%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B

sudo yum -y install gcc-c++

コンパイラgcc-c++は入ったので、 ビルドの進捗 ( %)は上がった

 ERROR  ## There is an issue with node-fibers ##                                                        22:06:33
`/home/vagrant/projects_VM-0815/covid19/node_modules/fibers/bin/linux-x64-67-glibc/fibers.node` is missing.

Try running this to fix the issue: /usr/bin/node /home/vagrant/projects_VM-0815/covid19/node_modules/fibers/build


 ERROR  Error: Cannot find module '/home/vagrant/projects_VM-0815/covid19/node_modules/fibers/bin/linux-x64-67-glibc/fibers'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:668:15)
    at Function.Module._load (internal/modules/cjs/loader.js:591:27)
    at Module.require (internal/modules/cjs/loader.js:723:19)
    at require (internal/modules/cjs/helpers.js:14:16)

● Client █████████████████████████ building (59%) 416/434 modules 18 active
 node_modules/core-js/modules/es7.object.entries.js

● Server █████████████████████████ building (44%) 285/301 modules 16 active
 vue-loader › components/PrinterButton.vue

[6] yarn add fibersが通った

[vagrant@localhost covid19]$ yarn add fibers
yarn add v1.22.4
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
info fsevents@2.1.2: The platform "linux" is incompatible with this module.
info "fsevents@2.1.2" is an optional dependency and failed compatibility check. Excluding it from installation.
info fsevents@1.2.11: The platform "linux" is incompatible with this module.
info "fsevents@1.2.11" is an optional dependency and failed compatibility check. Excluding it from installation.
[4/5] Linking dependencies...
warning "babel-jest > babel-preset-jest > @babel/plugin-syntax-object-rest-spread@7.8.3" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "vue-jest > @babel/plugin-transform-modules-commonjs@7.8.3" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "vue-property-decorator > vue-class-component@7.2.3" has unmet peer dependency "vue@^2.0.0".
warning "@nuxtjs/eslint-config-typescript > @typescript-eslint/eslint-plugin > tsutils@3.17.1" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta".
warning "@nuxtjs/vuetify > sass-loader@8.0.2" has unmet peer dependency "webpack@^4.36.0 || ^5.0.0".
warning "@nuxtjs/vuetify > vuetify@2.2.15" has unmet peer dependency "vue@^2.6.4".
warning "@nuxtjs/vuetify > vuetify-loader@1.4.3" has unmet peer dependency "vue-template-compiler@^2.5.0".
warning "@nuxtjs/vuetify > vuetify-loader@1.4.3" has unmet peer dependency "webpack@^4.0.0".
warning " > @vue/test-utils@1.0.0-beta.31" has unmet peer dependency "vue@2.x".
warning " > @vue/test-utils@1.0.0-beta.31" has unmet peer dependency "vue-template-compiler@^2.x".
warning " > babel-jest@24.9.0" has unmet peer dependency "@babel/core@^7.0.0".
warning "babel-jest > babel-preset-jest@24.9.0" has unmet peer dependency "@babel/core@^7.0.0".
warning "nuxt-purgecss > purgecss-webpack-plugin@1.6.0" has unmet peer dependency "webpack@^4 || ^3".
warning " > vue-jest@4.0.0-beta.2" has unmet peer dependency "@babel/core@7.x".
warning " > vue-jest@4.0.0-beta.2" has unmet peer dependency "vue@^2.x".
warning " > vue-jest@4.0.0-beta.2" has unmet peer dependency "vue-template-compiler@^2.x".
warning "vue-jest > ts-jest@23.10.5" has incorrect peer dependency "jest@>=22 <24".
[5/5] Building fresh packages...
success Saved lockfile.
success Saved 2 new dependencies.
info Direct dependencies
├─ cross-env@5.2.1
└─ fibers@4.0.2
info All dependencies
├─ cross-env@5.2.1
└─ fibers@4.0.2
Done in 188.80s.
[vagrant@localhost covid19]$

最後まで通った!

[vagrant@localhost covid19]$ yarn dev
yarn run v1.22.4
$ cross-env NODE_ENV=development nuxt-ts

 WARN  No .env file found in /home/vagrant/projects_VM-0815/covid19.                        nuxt:dotenv 22:14:21

start Loading module                                                                      nuxt-purgecss 22:14:22
ℹ PurgeCSS is not enabled because you are in dev mode                                     nuxt-purgecss 22:14:22

   ╭─────────────────────────────────────────────╮
   │                                             │
   │   Nuxt.js v2.11.0                           │
   │   Running in development mode (universal)   │
   │                                             │
   │   Listening on: http://localhost:3000/      │
   │                                             │
   ╰─────────────────────────────────────────────╯

ℹ Preparing project for development                                                                     22:14:28
ℹ Initial build may take a while                                                                        22:14:28
✔ Builder initialized                                                                                   22:14:28
✔ Nuxt files generated                                                                                  22:14:33

 WARN  [hardsource:20786bec] Node dependencies changed. Building new cache.                             22:14:38

ℹ Starting type checking service...                                                     nuxt:typescript 22:14:38
ℹ Using 1 worker with 2048MB memory limit                                               nuxt:typescript 22:14:38

✔ Client
  Compiled successfully in 4.19m

✔ Server
  Compiled successfully in 4.11m

ℹ No type errors found                                                                  nuxt:typescript 22:18:49
ℹ Version: typescript 3.8.3                                                             nuxt:typescript 22:18:49
ℹ Time: 35763ms                                                                         nuxt:typescript 22:18:49

 WARN  Compiled with 1 warnings                                                         friendly-errors 22:18:49


 WARN  in ./components/flow/FlowPc.vue?vue&type=style&index=0&module=true&lang=scss&    friendly-errors 22:18:49

Module Warning (from ./node_modules/postcss-loader/src/index.js):                       friendly-errors 22:18:49
Warning

(24:3) grid-gap only works if grid-template(-areas) is being used or both rows and columns have been declared and cells have not been manually placed inside the explicit grid
                                                                                        friendly-errors 22:18:49
 @ ./node_modules/vue-style-loader??ref--7-oneOf-0-0!./node_modules/css-loader/dist/cjs.js??ref--7-oneOf-0-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--7-oneOf-0-2!./node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-0-3!./node_modules/vue-loader/lib??vue-loader-options!./components/flow/FlowPc.vue?vue&type=style&index=0&module=true&lang=scss& 4:14-395 14:3-18:5 15:22-403
 @ ./components/flow/FlowPc.vue?vue&type=style&index=0&module=true&lang=scss&
 @ ./components/flow/FlowPc.vue
 @ ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./pages/flow.vue?vue&type=script&lang=js&
 @ ./pages/flow.vue?vue&type=script&lang=js&
 @ ./pages/flow.vue
 @ ./.nuxt/router.js
 @ ./.nuxt/index.js
 @ ./.nuxt/client.js
 @ multi eventsource-polyfill webpack-hot-middleware/client?reload=true&timeout=30000&ansiColors=&overlayStyles=&name=client&path=/__webpack_hmr/client ./.nuxt/client.js
                                                                                        friendly-errors 22:18:49
↻ Updated .nuxt/App.js                                                                                  22:18:50
ℹ Waiting for file changes                                                                              22:18:50
ℹ Memory usage: 626 MB (RSS: 791 MB)                                                                    22:18:51