很久没有维护这个站点了,今天抽空去更新了一下各种node的package,结果发现了如下错误:

报错信息

Node.js 12 actions are deprecated. Please update the following actions to use Node.js 16: actions/checkout@v2.

错误信息其实很直白,就是说Node 12现在不适用了,需要把你的Node更新为16。

大致原因我也明白,因为每当我更新代码之后,当前的Gatsby代码就会用Github的Workflow部署到Azure上。初始参数设置如下文


但是打开了自己的package.json, 上面赫然写着:

"engines": {
	"node": "16.x",
  ...
}

为什么我的Node版本明明已经是16.x了,还是会报错呢?实在是搞得我一头雾水。

无奈之下, 我注意到错误下还有个信息,看着像是一篇博客,只好耐着性子继续看下去。顺便学了学action的语法。

解决方法

很简单,只要告诉Github的Action用Node 16即可。

  1. 找到你的workflow,应该是一个yml,打开会看到如下的界面
  2. JSON 大致如下
jobs:
  build_and_deploy_job:
  ...
  steps:
    - uses: actions/checkout@v2
    ...

重点来了!很简单:

  1. 在step的下方插入一段
    - uses: actions/setup-node@v3
      with:
        node-version: 16

搞定!