2016-01-23 175 views
1

我在the_second_folder中有nodejs代碼,但我想從根文件夾運行它。當我從the_second_folder運行代碼時,我沒有收到任何錯誤,但是當我從根文件夾nodejs崩潰時,因爲包含而運行代碼。下面是代碼:Nodejs在從相對路徑運行時無法找到包含

require('rootpath')(); //does not work 

var file_to_include = "file.js"; 
eval(fs.readFileSync(file_to_include)+''); 

這隻有當我從the_second_folder(它是)上運行的代碼,但無法從根文件夾中運行時的作品(-1文件夾樹)。 錯誤恰恰是對列入file_to_include

的我想知道的是,我怎麼能運行在從根文件夾,名爲即使在相對的文件夾範圍內的節點腳本。

編輯

file_to_include ABSOLUTE_PATH 
Error: ENOENT, no such file or directory 'file_to_include.js' 
... 
at Object.<anonymous> (/root/the_second_folder/socket.io/lib/client.js:3:9) 
... 
at Object.<anonymous> (/root/the_second_folder/socket.io/lib/index.js:12:14) 

現在的錯誤socket.io發生......對此有何想法?

+0

由於相對路徑。 – Scimonster

+0

@Scimonster我知道x)我怎麼能這樣做,所以當從其他文件夾調用時,一切都是相對的? – Fane

+0

但是,你不是在問如何解決這個問題,而是在問爲什麼會發生這種情況,而這聽起來並不是你真正想知道的。我建議你[編輯]問你想要什麼。如果事情很清楚,那我就不會放棄。 – Scimonster

回答

0

您可以使用全球__dirname,它返回當前腳本的目錄。

然後你可以這樣做:

var file_to_include = "file.js"; 
eval(fs.readFileSync(path.join(__dirname,file_to_include))+''); 

但我可以問你爲什麼eval()荷蘭國際集團JS文件,而不是僅僅require()荷蘭國際集團呢?

+0

爲什麼我不?我處於發展階段。此解決方案不起作用。它確實找到該文件,但錯誤發生在socket.io模塊中...我會更新問題,並讓你知道 – Fane

+0

請檢查現在的問題:) – Fane

+0

我需要這個幫助:( – Fane