Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何为通过forever启动的nodejs应用程序设置正确的路径_Node.js_Upstart_Forever - Fatal编程技术网

Node.js 如何为通过forever启动的nodejs应用程序设置正确的路径

Node.js 如何为通过forever启动的nodejs应用程序设置正确的路径,node.js,upstart,forever,Node.js,Upstart,Forever,我使用这个upstart脚本通过forever启动我的nodejs应用程序,它运行良好。问题是,当应用程序以编程方式创建文件夹时,它会在根目录上创建文件夹 /public/newfolder而不是/var/www/nodeapp/public/newfolder 这是我的upstar文件myapp.conf: #!upstart # description "Example upstart script for a Node.js process" start on startup stop

我使用这个upstart脚本通过forever启动我的nodejs应用程序,它运行良好。问题是,当应用程序以编程方式创建文件夹时,它会在根目录上创建文件夹

/public/newfolder而不是/var/www/nodeapp/public/newfolder

这是我的upstar文件myapp.conf:

#!upstart

#
description "Example upstart script for a Node.js process"

start on startup
stop on shutdown


expect fork


env NODE_BIN_DIR="/usr/bin"
env NODE_PATH="/usr/lib/node_modules"
env APPLICATION_PATH="/var/www/nodeapp/app.js"
env PIDFILE="/var/run/myapp.pid"
env LOG="/var/log/myapp.log"
env MIN_UPTIME="5000"
env SPIN_SLEEP_TIME="2000"

script
    # Add the node executables to the path, which includes Forever if it is
    # installed globally, which it should be.
   PATH=$NODE_BIN_DIR:$PATH

    exec forever \
      --pidFile $PIDFILE \
      -a \
      -l $LOG \
      --minUptime $MIN_UPTIME \
      --spinSleepTime $SPIN_SLEEP_TIME \
      start $APPLICATION_PATH
end script

pre-stop script
    # Add the node executables to the path.
    PATH=$NODE_BIN_DIR:$PATH

    exec forever stop $APPLICATION_PATH
end script
以及创建文件夹的api.js:

newFolder = "public/"+folder_ID; //relative path for new folder
var mkdirp = require('mkdirp');

mkdirp(newFolder, function(err) { 
    if (err){
        console.log('error');
    }else{
        console.log('new folder');
    }

});

我希望您能帮助我,谢谢。

所有
fs
模块的方法都是相对于当前工作目录(cwd)操作的。如果给出了相对路径,请参阅


鉴于上述情况,您需要告诉forever使用正确的工作目录启动应用程序-这可以通过
--workingDir
标志完成。请再次参阅。

您需要在api.js中使用_dirname。例如:

newFolder = __dirname + "/public/"+folder_ID;

非常感谢你。--workingDir选项解决了我的问题。不客气!如果它解决了你的问题,请考虑接受这个答案。