从另一个目录启动时,我的node.js服务器不起作用

时间:2013-02-20 00:04:03

标签: javascript node.js

我正在尝试让我的node.js服务器在启动时启动。如果我在我的服务器文件夹中并输入:

node server.js

它运行得很好并启动位于同一文件夹中的python脚本。

但是,如果我从该目录外部或从init脚本运行它,如下所示:

node /home/servers/server.js

它启动并接收调用,但不是按原样运行python脚本。

有谁知道发生了什么以及如何解决这个问题?感谢。

2 个答案:

答案 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));