解决Centos下execjs._exceptions.RuntimeUnavailableError: Could not find an available JavaScript runtime的问题

解决Centos下execjs._exceptions.RuntimeUnavailableError: Could not find an available JavaScript runtime的问题:

部署了一个python项目到服务器上,该项目需要通过js生成cookie来调用接口爬取数据。项目部署之后直接通过命令行调用一切正常,改用定时任务调用出现报错。

报错信息:

Traceback (most recent call last):
  File "3_sub_demand_id_493_search_key.py", line 262, in <module>
    spider_315_search_key_sub_demand_id_532.run_spider_all_key(keyword)
  File "3_sub_demand_id_493_search_key.py", line 62, in run_spider_all_key
    self.get_key_page_data(page, key)
  File "3_sub_demand_id_493_search_key.py", line 88, in get_key_page_data
    get_code = self.get_list_code(data)
  File "3_sub_demand_id_493_search_key.py", line 55, in get_list_code
    ctx = execjs.compile(js_str1)
  File "/usr/local/lib/python3.6/site-packages/execjs/__init__.py", line 61, in compile
    return get().compile(source, cwd)
  File "/usr/local/lib/python3.6/site-packages/execjs/_runtimes.py", line 21, in get
    return get_from_environment() or _find_available_runtime()
  File "/usr/local/lib/python3.6/site-packages/execjs/_runtimes.py", line 49, in _find_available_runtime
    raise exceptions.RuntimeUnavailableError("Could not find an available JavaScript runtime.")
execjs._exceptions.RuntimeUnavailableError: Could not find an available JavaScript runtime.

通过报错信息可以知道是无法获取JavaScript runtime环境变量导致的。我的服务器是用宝塔来管理的,node也是通过宝塔安装的。下面记录本次问题的解决步骤:

找到node在本机的位置。执行如下命令:

[root@iZbp16mzapb0uukkkr17xiZ wencai]# whereis node
node: /www/server/nvm/versions/node/v14.16.1/bin/node

根据以上结果可以知道node的安装路径,于是作了一个软链到/usr/bin目录,命令如下:

ln -s /www/server/nvm/versions/node/v14.16.1/bin/node /usr/bin/node

执行完后再次通过定时任务调用脚本一切正常

You may also like...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据