使用Node.js的文件路径问题

时间:2016-12-16 21:35:32

标签: javascript ajax node.js ibm-cloud continuous-delivery

我正在将基于node.js的应用程序部署到IBM的Bluemix,并为他们提供的一个示例添加了一些功能。我添加了一个额外的javascript文件,它对PHP进行了ajax调用,但由于我的路径不正确,因此找不到PHP文件。我已经尝试将文件放在任何地方,但它只是没有找到。我正在考虑(作为一个完整的节点noobie),我错过了一些神秘的配置或什么。

在主目录(以及其他内容)中,结构如下:

-- 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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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。