In my Application, I want to execute a Node.JS file from PHP which in turn makes an HTTP request to another PHP file.
In short this is the Process that I am doing.
PHP file—>calls–> Nodejs file—>processes data –>and makes http request to–>PHP File
When I run the nodejs file via terminal, it successfully makes the http request to another PHP file and I get what I want.
But, when I try to run the nodejs file through PHP, the nodejs files is not able to find some modules.
My code in PHP:
$nodeJsPath = '/var/www/html/projectfolder/js/nodefunc.js'; $ret = exec("node ".$nodeJsPath.' 2>&1', $out, $err);
This is the error that I am getting:
Array ( [0] => module.js:457 [1] => throw err; [2] => ^ [3] => [4] => Error: Cannot find module 'some_module' [5] => at Function.Module._resolveFilename (module.js:455:15) [6] => at Function.Module._load (module.js:403:25) [7] => at Module.require (module.js:483:17) [8] => at require (internal/module.js:20:19) [9] => at Object.<anonymous> (/var/www/html/projectfolder/js/nodefunc.js:5:9) [10] => at Module._compile (module.js:556:32) [11] => at Object.Module._extensions..js (module.js:565:10) [12] => at Module.load (module.js:473:32) [13] => at tryModuleLoad (module.js:432:12) [14] => at Function.Module._load (module.js:424:3) )
Advertisement
Answer
I got it finally. It’s just ignoring the NODE_PATH
variable for reasons unknown 🙁
In the Nodejs File I had to give the absolute path of the module like this:
var request = require("/usr/lib/node_modules/request");