2016-12-16 53 views
1

我正在将一个基于node.js的应用程序部署到IBM的Bluemix,并为其提供的示例之一添加了一些功能。我已经添加了一个额外的JavaScript文件,它可以对PHP进行ajax调用,但是PHP文件因未找到而返回,因为我的路径不正确。我尝试过把文件放到任何地方,只是找不到。我在想(作为一个总节点noobie)我错过了一些神秘的配置或者其他东西。使用Node.js的文件路径问题

在主目录(除其他事项外),该结构是这样的:

-- views 
    - index.ejs (this is the main displayed code) 
-- public 
    - js 
    - custom.js (my added file) 
    - all the other necessary js files 
    - css 
    - img 
    - php - I added this directory 
    - get-twitter.php - I added this...custom.js makes an ajax call here 

在custom.js,我有这样的:

$("#get-twitter").click(function(event) { 
    handle = $('#twitter-handle').val(); 
    $.ajax({ 
     url: 'php/get-twitter.php', 
     type: 'POST', 
     dataType: 'JSON', 
     data: { 
      handle: handle, 
      }, 
     success: function(data) { 
     console.log(data); 
     $.each(data, function(index, val) { 
      console.log(val.text); 
     }); 
     } 
}); 
    }); 

当我尝试拨打这通电话,该文件没有找到,但路径是这样的:https://myapp.mybluemix.net/php/get-twitter.php它应该在views/php/get-twitter.php,但我猜这是我的配置问题。

我已经试过这个每一个迭代:url: 'php/get-twitter.php',并把PHP文件放在每个目录中,没有任何工作。

我在这里错过了什么?

+2

你写了什么服务器端JavaScript来让你的Node.js应用程序运行PHP? – Quentin

+0

这是我猜测的问题。从未使用Node,除了我在示例中看到的代码之外,我不知道甚至需要什么。我以为就是这样。 – jonmrich

+0

我添加了ibm-bluemix和continuous-delivery标签,以获得一些IBM开发人员关注的问题。由于5个标签的限制,我不得不删除php。 – ralphearle

回答

1

无法从节点运行PHP脚本。您将需要建立一个支持PHP的服务器,并在那里提出请求。一种选择是Apache

实际上,您可能不希望为了运行单个PHP脚本而设置整个服务器。更合理的解决方案是将PHP脚本移植到Node上运行。在NPM上有许多与twitter API集成的软件包(例如twitter模块)。

1

如果服务器安装了PHP,那么您可以尝试使用exec使用命令行解释器运行PHP文件并获取输出。显然你需要重构你的代码来处理由shell传递的参数($args)并显示一个JSON响应,这个响应将被节点捕获。例如:

exec('php -f /project/file.php', function (err, out) { 
    if (!err) { 
    const output = JSON.parse(out); 
    // do something with the object 
    } 
}); 

正如@positlabs所说,让事情变得更简单,并将脚本移植到JavaScript。