我的node.js服务器没有'从另一个目录启动时无法工作

My node.js server doesn't work when launched from another directory

本文关键字:另一个 启动 工作 服务器 js node 我的      更新时间:2023-09-26

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

node server.js

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

但是,如果我从该目录之外或从init脚本运行它,比如:

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/
    src/
        index.js
    package.json

在index.js里面我会放:

const path = require('path');
process.chdir(path.join(__dirname));