我正在尝试让我的 node.js 服务器在启动时启动。如果我在我的服务器文件夹中并输入:
node server.js
它运行良好并启动位于同一文件夹中的 python 脚本。
但是,如果我从该目录外部或从初始化脚本运行它,如下所示:
node /home/servers/server.js
它启动并接收呼叫,但没有按预期运行 python 脚本。
有谁知道发生了什么以及我该如何解决?谢谢。
我正在尝试让我的 node.js 服务器在启动时启动。如果我在我的服务器文件夹中并输入:
node server.js
它运行良好并启动位于同一文件夹中的 python 脚本。
但是,如果我从该目录外部或从初始化脚本运行它,如下所示:
node /home/servers/server.js
它启动并接收呼叫,但没有按预期运行 python 脚本。
有谁知道发生了什么以及我该如何解决?谢谢。
当您运行时node
,它会引用来自目录节点的所有文件系统调用,而不是其中的目录app.js
,因此如果您尝试这样做require('./myfile')
,myfile.js
则需要在您正在运行的目录node
中。
从不同的目录运行这个简单的脚本以查看它的运行情况(它运行,从这里ls
精心复制):
var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ls -la", puts);
至于您的 Python 问题,您应该开发一个经验位置来调用app.js
,并在定位脚本时使用它。
您还可以更改目录以确保您在需要的位置。只需在文件顶部添加如下内容:
__dirname
指向包含当前文件的目录。对于这个例子,我将假设以下 repo 结构:
repo/
src/
index.js
package.json
在 index.js 里面我会放:
const path = require('path');
process.chdir(path.join(__dirname));