我的aws实例抛出无法找到节点'安装nodejs后甚至出错

时间:2018-04-03 14:59:47

标签: node.js python-3.x amazon-web-services amazon-ec2

我有一个包含CentOS的 AWS EC2 实例(至少是我的想法),我按照此链接(How to yum install Node.JS on Amazon Linux)在我的实例上安装了nodejs(第二个答案)。事情是我能够成功安装它甚至能够运行以下命令

node --version
v8.11.1

npm --version
5.6.0

node -e "console.log('Running Node.js ' + process.version)"
Running Node.js v8.11.1

但我有一个python文件,它通过python' s运行节点命令 subprocess module.This下面的python文件

import json
import yaml
import subprocess


def output_filter(json_data, exp):
    json_data = json.dumps(json_data)
    result = subprocess.check_output(['node', '/home/ec2-user/api-demo/jstest3.js', json_data, exp])
    dict = yaml.load(result.decode("utf-8"))
    filtered_output = json.dumps(dict)
    return json.loads(filtered_output)

以下是我的 jstest3.js 文件

var args = process.argv.slice(2);
//console.log(args[0]);

var jsonata = require("jsonata");

var data = JSON.parse(args[0]);
var expression = jsonata(args[1]);
var result = expression.evaluate(data);
console.log(result);

我基本上使用一个名为jsonata的nodejs库来做一些JSON解析。我可以在我的本地机器上使用执行这个python文件(我有一个Ubuntu 16.10 x86_64)没有任何问题。但是当我执行时在我的aws instance中,这是我得到的错误

result = subprocess.check_output(['node', '/home/ec2-user/api-demo/jstest3.js', json_data, exp])
  File "/usr/lib64/python3.5/subprocess.py", line 316, in check_output
    **kwargs).stdout
  File "/usr/lib64/python3.5/subprocess.py", line 383, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/usr/lib64/python3.5/subprocess.py", line 676, in __init__
    restore_signals, start_new_session)
  File "/usr/lib64/python3.5/subprocess.py", line 1289, in _execute_child
    raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'node'

为什么我得到这个错误,尽管如上所示在我的aws实例中安装了节点?我做错了什么?

1 个答案:

答案 0 :(得分:0)

啊!出于某种原因,AWS实例无法跟上我所做的所有安装。所以,一旦我通过访问AWS控制台重新启动实例 - >重启实例,所有错误突然消失,它开始处理我的nodejs请求。