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



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

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

这是我的上传文件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)进行操作,请参阅文档。

鉴于以上情况,您需要永远告诉使用正确的工作目录启动应用程序——这可以通过--workingDir标志来完成。再次查看文档。

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

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

相关内容

  • 没有找到相关文章

最新更新