『改訂新版 Elixir/Phoenix初級』シリーズ 読者サポートページ
2021/05/06
ここは『改訂新版 Elixir/Phoenix 初級』シリーズの読者サポートページです。
刊行後に見つかった誤記・誤字や内容の更新などについてはこのページでお知らせします。
本書で誤字、脱字、内容の間違いなどを見つけた方は、hermes@oiax.jp までご連絡ください。
ソースコード
- https://github.com/oiax/modest_greeter/tree/rev1
- https://github.com/oiax/nano_planner/tree/volume02-rev
- https://github.com/oiax/nano_planner/tree/volume03-rev
- https://github.com/oiax/nano_planner/tree/volume04-rev
- https://github.com/oiax/nano_planner/tree/volume05-rev-2
ダウンロード
ペーパーバック版の正誤表
- https://www.oiax.jp/books/ex_phx_revised_vol1_errata.html (①)
- https://www.oiax.jp/books/ex_phx_revised_vol2_errata.html (②)
- https://www.oiax.jp/books/ex_phx_revised_vol3_errata.html (③)
- https://www.oiax.jp/books/ex_phx_revised_vol4_errata.html (④)
- https://www.oiax.jp/books/ex_phx_revised_vol5_errata.html (⑤)
トラブルシューティング
npm install
が失敗する問題への対処法
『初級②』〜『初級⑤』で作成する NanoPlanner において、npm install
コマンドが失敗する問題が報告されています。
具体的には、NanoPlanner のプロジェクトディレクトリから cd assets; npm install
コマンドを実行すると、次のようなエラーメッセージが表示されて失敗します。
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.
npm ERR! code 1
npm ERR! path /apps/nano_planner/assets/node_modules/node-sass
npm ERR! command failed
npm ERR! command sh -c node scripts/build.js
npm ERR! Building: /usr/bin/node /apps/nano_planner/assets/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
(以下略)
エディタで assets/package.json
を開き、node-sass
と sass-loader
のバージョンを次のように変更してください。
node-sass
:"^8.0.0"
sass-loader
:"^10.4.0"
2023年9月12日現在における、node-sass
と sass-loader
の最新バージョンは 9.0.0
と 13.3.2
ですが、この組み合わせではうまく行きません。NanoPlanner は webpack 4
を利用しているのですが、sass-loader 13.x
には webpack 5
が必要だからです。
mix phx.server
実行時に webpack.js
でエラーが発生する問題への対処法
『初級②』〜『初級⑤』で作成する NanoPlanner において、mix phx.server
コマンドを実行すると次のようなエラーメッセージが出力される問題が報告されています。
Node.js v18.17.1
[error] Task #PID<0.521.0> started from NanoPlannerWeb.Endpoint terminating
** (stop) :watcher_command_error
(phoenix 1.5.14) lib/phoenix/endpoint/watcher.ex:56: Phoenix.Endpoint.Watcher.watch/2
(elixir 1.11.4) lib/task/supervised.ex:90: Task.Supervised.invoke_mfa/2
(stdlib 3.14.2.3) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
Function: &Phoenix.Endpoint.Watcher.watch/2
Args: ["node", ["node_modules/webpack/bin/webpack.js", "--mode", "development", "--watch-stdin", {:cd, "/apps/nano_planner/assets"}]]
webpack is watching the files…
[hardsource:2279df90] Using 0 MB of disk space.
[hardsource:2279df90] Writing new cache 2279df90...
[hardsource:2279df90] Tracking node dependencies with: package-lock.json.
node:internal/crypto/hash:69
this[kHandle] = new _Hash(algorithm, xofLen);
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:69:19)
at Object.createHash (node:crypto:133:10)
at module.exports (/apps/nano_planner/assets/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/apps/nano_planner/assets/node_modules/webpack/lib/NormalModule.js:417:16)
at handleParseError (/apps/nano_planner/assets/node_modules/webpack/lib/NormalModule.js:471:10)
at /apps/nano_planner/assets/node_modules/webpack/lib/NormalModule.js:503:5
at /apps/nano_planner/assets/node_modules/webpack/lib/NormalModule.js:358:12
at /apps/nano_planner/assets/node_modules/loader-runner/lib/LoaderRunner.js:373:3
at iterateNormalLoaders (/apps/nano_planner/assets/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
at iterateNormalLoaders (/apps/nano_planner/assets/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
at /apps/nano_planner/assets/node_modules/loader-runner/lib/LoaderRunner.js:236:3
at context.callback (/apps/nano_planner/assets/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
at /apps/nano_planner/assets/node_modules/babel-loader/lib/index.js:44:71 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
エディタで config/dev.exs
を開き、29行目を次のように書き換えてください。
【書き換え前】
cd: Path.expand("../assets", __DIR__)
【書き換え後】
cd: Path.expand("../assets", __DIR__),
env: [{"NODE_OPTIONS", "--openssl-legacy-provider"}]
Node.js のバージョンを 17 以上に上げると発生する現象です。
参考資料: https://github.com/webpack/webpack/issues/14532#issuecomment-947012063
ex-v05
をクローンした後に bin/setup.sh
が失敗する問題への対処法
『初級⑤』の p.249 「付録A 各種ソフトウェアのインストール」にある、Dockerfile 等の取得のコマンドを実行した後 bin/setup.sh
が失敗する問題が報告されています。
具体的には Dockerfile 等の取得で行う次のコマンドを実行し、
git clone -b ex05-rev https://github.com/oiax/phx-compose.git ex-v05
cd ex-v05
bin/setup.sh
のコマンドを行うと、次のようなエラーメッセージが表示されて失敗します。
Step 12/24 : RUN sudo apt-get update
---> Running in 4da25b76a123
Hit:1 http://security.debian.org/debian-security buster/updates InRelease
Hit:2 https://deb.nodesource.com/node_18.x nodistro InRelease
Hit:3 http://deb.debian.org/debian buster InRelease
Hit:4 http://deb.debian.org/debian buster-updates InRelease
Ign:5 http://apt.postgresql.org/pub/repos/apt -pgdg InRelease
Err:6 http://apt.postgresql.org/pub/repos/apt -pgdg Release
404 Not Found [IP: 217.196.149.55 80]
Reading package lists...
E: The repository 'http://apt.postgresql.org/pub/repos/apt -pgdg Release' does not have a Release file.
ERROR: Service 'web' failed to build: The command '/bin/sh -c sudo apt-get update' returned a non-zero code: 100
エディタで dockerfile
を開き、次のように変更してください。
- 16、17 行目を削除
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | \
sudo tee /etc/apt/sources.list.d/pgdg.list
- 19 行目の末尾
-12
を削除
RUN sudo apt-get -y install postgresql-client-12
これらを変更後、bin/setup.sh
を再度実行し、『初級⑤』の p.10 「本巻から読み始める場合の準備作業」を行ってください。