使用Crontab定期执行Gatsby Build时出现语法错误的问题
解决Crontab执行Gatsby构建脚本时的语法错误
这个错误是因为代码里用到的可选链操作符?.属于ES2020特性,需要Node.js 14及以上版本支持,但crontab的执行环境里Node.js版本太低,不兼容这个语法。而你直接运行脚本时,用的是当前用户环境里的高版本Node,所以没问题。
下面是几种解决办法:
在构建脚本里指定Node环境
先通过which node命令找到你当前使用的高版本Node的完整路径(比如/usr/local/bin/node),然后修改脚本,把PATH环境变量加上Node所在目录,确保crontab能找到正确版本的Node:#!/bin/bash PATH=/usr/local/bin:$PATH cd /var/www/html && npm run build或者直接使用npm的完整路径执行:
#!/bin/bash cd /var/www/html && /usr/local/bin/npm run build在crontab中配置环境变量
执行crontab -e编辑定时任务,在任务上方添加PATH配置,指定包含高版本Node的路径,同时把执行频率改成你需要的每小时一次:PATH=/usr/local/bin:/usr/bin:/bin 0 * * * * /var/www/html/build.bash 1> /dev/null 2> /home/user/test.txt升级系统全局Node.js版本
如果系统全局安装的Node版本低于14,直接升级到14及以上版本,这样所有执行环境都会支持该语法,一劳永逸。
内容的提问来源于stack exchange,提问作者blacky99
相关产品推荐
相关产品推荐

