簡體   English   中英

如何為通過永久啟動的Node.js應用程序設置正確的路徑

[英]How to set correct paths for nodejs application launched via forever

我永遠使用這個upstart腳本啟動我的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)運行,請參閱文檔

鑒於上述情況,您需要永遠告訴您使用正確的工作目錄啟動應用程序 - 這可以通過--workingDir標志來完成。 再次查看文檔

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM