【问题标题】:File path issue using Node.js使用 Node.js 的文件路径问题
【发布时间】:2016-12-16 21:35:31
【问题描述】:

我正在将一个基于 node.js 的应用程序部署到 IBM 的 Bluemix,并在他们提供的一个示例中添加了一些功能。我添加了一个额外的 javascript 文件,该文件对 PHP 进行 ajax 调用,但由于我的路径不正确,PHP 文件返回为未找到。我试过把文件放在任何地方,但就是找不到。我在想(作为一个总节点新手)我缺少一些神秘的配置或其他东西。

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

-- 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 文件放在每个目录中,但没有任何效果。

我在这里错过了什么?

【问题讨论】:

  • 您编写了哪些服务器端 JavaScript 来让您的 Node.js 应用程序运行 PHP?
  • 我猜这就是问题所在。由于从未使用过 Node,除了您在我的示例中看到的代码之外,我什至不知道什么是必要的。我以为就是这样。
  • 我添加了 ibm-bluemix 和 Continuous-delivery 标签,让一些 IBM 开发人员关注这个问题。由于 5 个标签的限制,我不得不删除 php。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果服务器安装了 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。

    【讨论】:

      猜你喜欢
      • 2013-08-02
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 2011-03-27
      • 2019-07-18
      • 1970-01-01
      • 2010-11-07
      相关资源
      最近更新 更多