我正在尝试让我的node.js服务器在启动时启动。如果我在我的服务器文件夹中并输入:
node server.js
它运行得很好并启动位于同一文件夹中的python脚本。
但是,如果我从该目录外部或从init脚本运行它,如下所示:
node /home/servers/server.js
它启动并接收调用,但不是按原样运行python脚本。
有谁知道发生了什么以及如何解决这个问题?感谢。
答案 0 :(得分:2)
当你运行node
时,它引用来自目录节点的所有文件系统调用,而不是app.js
所在的目录,所以如果你是尝试require('./myfile')
,myfile.js
将需要位于您正在运行的目录node
中。
从不同的目录运行这个简单的脚本以查看它的实际效果(它运行ls
,从here精心复制):
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
,并在定位脚本时使用它。
答案 1 :(得分:0)
您还可以更改目录以确保您位于需要的位置。只需在文件顶部添加如下内容:
__dirname
指向包含当前文件的目录。对于这个例子,我将假设以下 repo 结构:
repo/
src/
index.js
package.json
在 index.js 里面我会放:
const path = require('path');
process.chdir(path.join(__dirname));