2016-12-16 4 views
1

IBM의 Bluemix에 node.js 기반 응용 프로그램을 배포하고 제공하는 샘플 중 하나에 몇 가지 기능을 추가했습니다. PHP로 아약스 호출을 만드는 추가 자바 스크립트 파일을 추가했지만 내 경로가 올바르지 않아 PHP 파일이 다시 찾을 수 없습니다. 파일을 도처에 넣으려고했는데 발견되지 않았습니다. 나는 신비한 구성이나 무언가를 놓치고 있다고 (전체 노드 noobie로서) 생각하고있다.Node.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); 
     }); 
     } 
}); 
    }); 

:

custom.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 

, 나는이가 , 파일을 찾을 수 없지만 경로는 다음과 같습니다. https://myapp.mybluemix.net/php/get-twitter.phpviews/php/get-twitter.php에 있어야합니다.하지만이 문제는 필자가 생각하기에 구성 문제입니다.

저는이 모든 반복을 시도했습니다 : url: 'php/get-twitter.php', 그리고 모든 디렉토리에 PHP 파일을 넣어 아무것도 작동하지 않습니다.

무엇이 여기에 있습니까?

+2

Node.js 응용 프로그램에서 PHP를 실행하기 위해 작성한 JavaScript는 무엇입니까? – Quentin

+0

그것이 내가 생각하는 문제 다. Node를 사용한 적이 없기 때문에, 필자가 본 예제에서 볼 수있는 코드 외에도 필요한 것이 무엇인지 알지 못했다. 나는 그것이 그럴 것이라고 생각했다. – jonmrich

+0

ibm-bluemix 및 continuous-delivery 태그를 추가하여 질문에 대한 IBM의 발전적인 시각을 얻었습니다. 나는 5 태그 제한으로 인해 PHP를 제거했다. – ralphearle

답변

1

노드에서 PHP 스크립트를 실행할 방법이 없습니다. PHP를 지원하는 서버를 설정하고 거기에 요청해야합니다. 하나의 옵션은 Apache입니다.

현실적으로 단일 PHP 스크립트를 실행하기 위해 전체 서버를 설정하고 싶지는 않을 것입니다. 보다 합리적인 해결책은 Node에서 실행되도록 PHP 스크립트를 이식하는 것입니다. NPM에는 twitter API 통합을위한 패키지가 많이 있습니다 (예 : twitter 모듈).

1

서버에 PHP가 설치되어있는 경우 exec을 사용하여 명령 줄 인터프리터를 사용하여 PHP 파일을 실행하고 결과를 얻을 수 있습니다. 분명히 코드를 리팩터링하여 셸에서 전달 된 인수 ($args)로 작업하고 노드에 의해 catch되는 JSON 응답을 표시해야합니다. 예를 들어 :

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

@positlabs 말했듯이, 자바 스크립트 스크립트 일들이 간단하고 포트를 유지한다.