使用Node.js的文件路径问题
问题描述:
我正在将一个基于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文件放在每个目录中,没有任何工作。
我在这里错过了什么?
答
如果服务器安装了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。
你写了什么服务器端JavaScript来让你的Node.js应用程序运行PHP? – Quentin
这是我猜测的问题。从未使用Node,除了我在示例中看到的代码之外,我不知道甚至需要什么。我以为就是这样。 – jonmrich
我添加了ibm-bluemix和continuous-delivery标签,以获得一些IBM开发人员关注的问题。由于5个标签的限制,我不得不删除php。 – ralphearle