ReactベースのSSGを何かしら試したかったので、入門してみたいと思います。
※GatsbyがSSGかどうかはひとまず置いときます。
公式チュートリアルを読みながら進めていきます。
> yarn add gatsby-cli
……と言いつつ最初から違うことをやっていますが。nodeもyarnもgitも入っているのと、ひとまずテストなのでローカルインストールにしようと思ったのでグローバルオプションなしの上yarn add
でインストールするという。
> gatsby --help
╔════════════════════════════════════════════════════════════════════════╗
║ ║
║ Gatsby collects anonymous usage analytics ║
║ to help improve Gatsby for all users. ║
║ ║
║ If you'd like to opt-out, you can use `gatsby telemetry --disable` ║
║ To learn more, checkout https://gatsby.dev/telemetry ║
║ ║
╚════════════════════════════════════════════════════════════════════════╝
Usage: gatsby <command> [options]
## 略
入りましたね。
> gatsby new hello-world https://github.com/gatsbyjs/gatsby-starter-hello-world
## 略
Done in xx.xxs.
info Initialising git in hello-world
Initialized empty Git repository in PATH/TO/DIRECTORY/hello-world/.git/
info Create initial git commit in hello-world
info
Your new Gatsby site has been successfully bootstrapped. Start developing it by
running:
cd hello-world
gatsby develop
終わりました。
> cd hello-world
> gatsby develop
さて、どうでしょうか。
> gatsby develop
child_process.js:122
p.open(fd);
^
Error: EBADF: bad file descriptor, uv_pipe_open
at Object._forkChild (child_process.js:122:5)
at setupChildProcessIpcChannel (internal/bootstrap/pre_execution.js:329:30)
at prepareMainThreadExecution (internal/bootstrap/pre_execution.js:54:3)
at internal/main/run_main_module.js:7:1 {
errno: -4083,
code: 'EBADF',
syscall: 'uv_pipe_open'
}
何……だと……。
調べてみるとこんなドキュメントが。Windowsは設定が必要だったのか……。PowerShellを管理者権限で実行して以下のコマンドを実行。
> npm install windows-build-tools -g npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN lifecycle The node binary used for scripts is PATH\TO\DIRECTORY\bin\node.exe but npm is using PATH\TO\DIRECTORY\node.exe itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
> windows-build-tools@5.2.2 postinstall PATH\TO\DIRECTORY\node_modules\windows-build-tools
> node ./dist/index.js
Downloading vs_BuildTools.exe
[> ] 0.0% (0 B/s)
Downloaded vs_BuildTools.exe. Saved to PATH\TO\DIRECTORY\USERNAME\.windows-build-tools\vs_BuildTools.exe.
Starting installation...
Launched installers, now waiting for them to finish.
This will likely take some time - please be patient!
Status from the installers:
---------- Visual Studio Build Tools ----------
YYYY-mm-ddThh:ii:ss : Verbose : [InstalledProductsProviderImpl]: Stream was closed
YYYY-mm-ddThh:ii:ss : Verbose : [InstallerImpl]: Rpc connection was closed.
YYYY-mm-ddThh:ii:ss : Verbose : [InstallerImpl]: Stream was closed
YYYY-mm-ddThh:ii:ss : Verbose : [SetupUpdaterImpl]: Rpc connection was closed.
YYYY-mm-ddThh:ii:ss : Verbose : [SetupUpdaterImpl]: Stream was closed
------------------- Python --------------------
Python 2.7.15 is already installed, not installing again.
Could not install Visual Studio Build Tools.
Please find more details in the log files, which can be found at
PATH\TO\DIRECTORY\USERNAME\.windows-build-tools
Skipping configuration: No configuration for Python or Visual Studio Build Tools required.
All done!
+ windows-build-tools@5.2.2
updated 1 package in 11.732s
失敗しました……。思えば、前に一度やったことあるのでそのせいかも。
> gatsby develop
child_process.js:122
p.open(fd);
^
Error: EBADF: bad file descriptor, uv_pipe_open
at Object._forkChild (child_process.js:122:5)
at setupChildProcessIpcChannel (internal/bootstrap/pre_execution.js:329:30)
at prepareMainThreadExecution (internal/bootstrap/pre_execution.js:54:3)
at internal/main/run_main_module.js:7:1 {
errno: -4083,
code: 'EBADF',
syscall: 'uv_pipe_open'
}
ダメですね……。
次はhttps://go.microsoft.com/fwlink/?LinkId=532606&clcid=0x409からVisual Studio Community 2015をダウンロードし、ドキュメントと同じ項目をチェックしてインストールしてみます。
しばらくかかってインストール完了。この状態でもう一度走らせてみます。
> gatsby develop
child_process.js:122
p.open(fd);
^
Error: EBADF: bad file descriptor, uv_pipe_open
at Object._forkChild (child_process.js:122:5)
at setupChildProcessIpcChannel (internal/bootstrap/pre_execution.js:329:30)
at prepareMainThreadExecution (internal/bootstrap/pre_execution.js:54:3)
at internal/main/run_main_module.js:7:1 {
errno: -4083,
code: 'EBADF',
syscall: 'uv_pipe_open'
}
変わらず。今日はここでタイムアップ。うーん、残念。
ちなみに、エラー文で検索して軽く眺めていると、他のECMAScript系のプロジェクトでもWindows環境で同様のエラーが起きるようなIssuesが複数見られました。
そのため、もしかしたらGatsby.js云々というより依存しているパッケージ・バージョンでWindowsだとダメなものがあるのかもしれません(未検証)。