2012-11-24 44 views
118

我開發了一個node.js程序,在我的電腦上使用express框架,它運行良好,沒有任何抱怨。Node.js,無法打開文件。錯誤:ENOENT,stat'./path/to/file'

但是,當我在我的SUSE Studio應用裝置上運行程序時,它在哪裏存在,我在任何文件交互時收到錯誤消息。

Error: ENOENT, stat './path/to/file' 

我已檢查文件權限是否正確,它們是什麼。如果這很重要,我的電腦和我的設備運行不同版本的節點。

有什麼想法?

+1

由於路徑是相對的,也許你正在運行它從不同的目錄?你如何生成路徑以及目錄結構是什麼?你如何運行節點? – loganfsmyth

+1

謝謝,是的,我從一個不同的目錄運行腳本,愚蠢地認爲文件路徑是腳本本身的相對位置。我知道這是簡單的東西:) – CalumMc

+0

它應該是可以修復的。你能否添加一些代碼來顯示你如何製作路徑以及你期望它解決什麼問題?如果你希望它是相對於一個特定的文件,通常你會'__dirname +'path/to/file';' – loganfsmyth

回答

178

使用.指定的路徑與當前工作目錄相關,而不是相對於腳本文件。因此,如果您運行node app.js,則可以找到該文件,但如果運行node folder/app.js,則可能找不到該文件。唯一的例外是require('./file'),這是唯一可能的,因爲require每個模塊都存在,因此知道它從哪個模塊被調用。

要製作相對於腳本的路徑,必須使用__dirname變量。

var path = require('path'); 

path.join(__dirname, 'path/to/file') 

或潛在

path.join(__dirname, 'path', 'to', 'file') 
+9

謝謝;有時候,像這樣的小事很難在文檔中找到,對於新手來說(像我一樣!)。 – CalumMc

4

這裏使用app.js

輸入代碼指定文件名

res.download(__dirname+'/'+input); 
相關問題