使用Node.js的文件path问题

我正在将一个基于node.js的应用程序部署到IBM的Bluemix,并为其提供的示例之一添加了一些function。 我已经添加了一个额外的JavaScript文件,使PHP调用ajax调用,但PHP文件回来没有find,因为我的path是不正确的。 我试图把文件放在任何地方,只是没有find。 我正在思考(作为一个总节点noobie),我错过了一些神秘的configuration或东西。

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

-- 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); }); } }); }); 

当我尝试进行此调用时,找不到该文件,但path为: https://myapp.mybluemix.net/php/get-twitter.php : https://myapp.mybluemix.net/php/get-twitter.php它应该在views/php/get-twitter.php ,但我猜这是我的一个configuration问题。

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

我在这里错过了什么?

没有办法从节点运行PHP脚本。 您将需要build立一个支持PHP的服务器,并在那里提出请求。 一种select是Apache 。

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

如果服务器安装了PHP,那么可以尝试使用exec来使用命令行解释器运行PHP文件并获取输出。 显然你需要重构你的代码来处理由shell( $args )传递的$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。