事象
TypeScript化したGatsbyをNetlifyでビルドした際に以下のエラーが発生しました。
$ gatsby build
error Error in "/opt/build/repo/gatsby-node.js": Unexpected token '.'
Error: /opt/build/repo/src/gatsby-node/index.ts:28
const posts = result.data?.allMarkdownRemark.nodes;
^
SyntaxError: Unexpected token '.'
対応
Netlifyのビルドログに Now using node v12.18.0 (npm v6.14.4)
とあるようにデフォルトではv12.18.0が使われるようです。
Optional ChainingはNode.js v14から使用できる機能のため、v14以上が使用されるように設定します。
Manage build dependencies | Netlify Docs
環境変数 NODE_VERSION
で指定できるため以下のように設定しました。
これでビルドが通るようになりました。