2013-01-15 35 views
1

所以,我一直在努力的上傳腳本(代碼如下),我有我的Windows機器上工作,但我的Linux服務器上它似乎失敗,Express.js拋出錯誤:Linux服務器上ENOENT

Error: ENOENT, open 'uploads/da5ab67b48ea2deecd25127186017083' 

據我所知,該錯誤是說沒有路徑/文件,但我嘗試文件重命名之前檢查文件的存在。

exports.product_files_upload = function (req, res) { 
    if (req.files) { 
     var tmpArray = []; 
     for(var file in req.files){ 
      console.log(file) 
      if (file){ 
       var splitName = file.split('-'); 
       if (splitName.length > 1) { 
        var username = splitName[0]; 
        var productId = splitName[1]; 
        var index = splitName[2]; 
       } else { 
        return; 
       } 
      } else { 
       return; 
      } 
      //console.log(username) 
      //console.log(productId) 
      var tmp_path = req.files[file].path; 
      console.log(fs.existsSync(tmp_path)) 
      createUserDir(); 
      createProductDirs(username, productId); 
      //console.log(__dirname) 
      var target_path = './public/user_files/'+ username + '/products/'+productId+'/files/' + req.files[file].name, 
       save_path = 'user_files/'+ username + '/products/'+productId+'/files/' + req.files[file].name; 
      if (fs.existsSync(target_path)) { 
       tmpArray.push({exists:true, name:req.files[file].name}); 
      } else { 
       tmpArray.push({ 
        size: req.files[file].size, 
        type: req.files[file].type, 
        name: req.files[file].name, 
        path: save_path, 
        exists:false 
       }); 
       if (fs.existsSync(tmp_path)) { 
        fs.rename(tmp_path, target_path, function(err) { 
         if (err) throw err; 
         // delete the temporary file, so that the explicitly set temporary upload dir does not get filled with unwanted files 
         fs.unlink(tmp_path, function() { 
          if (err) throw err; 
     //     res.send(save_path); 

         }); 
        }); 
       } else { 
        tmpArray.push({ 
         size: req.files[file].size, 
         type: req.files[file].type, 
         name: req.files[file].name, 
         path: save_path, 
         exists:false 
        }); 
       } 
      } 
     } 
     res.json(tmpArray); 
    } 

}; 

UPDATE:我使用的永遠運行我的快遞應用程序,當我停止我的應用程序永遠過程,切換到只是「節點app.js」的問題得到了解決。這不是一個可接受的解決方法。我想這可能會永遠存在問題。

回答

1

好吧,我想通了。我用的是永遠和絕對路徑啓動我的應用程序在我的Linux機器一樣

forever start /path/to/app.js 

但是當我cd到應用程序目錄,然後啓動它的工作程序。

forever start app.js 
相關問題