2014-10-05 72 views
0

我在建立節點的應用程序中收到以下錯誤。爲什麼Node無法解析這個文件名?

Error: Cannot find module '/Users/bryce/repos/wudu/requester'

當我嘗試從該文件訪問模塊(請求者/ requests.js),就會出現此(main.js):

main.js

var r = require('./requester/requests'); 

r.updateDB(); 

我對於錯誤消息爲什麼會切斷文件名感到困惑,並且指向包含該文件的目錄。

我也感到困惑,因爲當我嘗試自行執行文件(requester/requests.js)時,我得到相同的錯誤。

這是文件中包含的簡化版本,如果有幫助的話。

請求者/ requests.js

var $ = require('cheerio'); 
var request = require('request'); 
var q = require('q'); 
var dbStatus = require('./dbStatus'); 

function updateDB() { 
    // n/a 
} 


module.exports = { 
    updateDB: updateDB 
}; 

應用程序的文件夾中包含main.js和請求者兩者。所以我相當肯定我的路徑聲明是正確的。但是我對Node相當陌生,所以可能會誤解模塊的工作原理。

在此先感謝!

+0

你有沒有試過'require('./ requester/requests.js');'? – Bergi 2014-10-05 22:53:50

+0

你確定這條路是對的嗎?在位於與main相同的目錄中的請求者子目錄中? – akaphenom 2014-10-05 23:04:49

+0

@Bergi是的,我有。 – 2014-10-06 00:10:07

回答

2

我可以重新創建錯誤的唯一方法是如果main.js與requestor.js位於同一目錄中。爲了使您需要調用正常工作,你的目錄結構應該像這樣:

[email protected]:~/node_test$ tree 
. 
├── main.js 
└── requester 
    └── requests.js 

1 directory, 2 files 

如果你的目錄看起來是這樣的:

[email protected]:~/node_test$ tree 
. 
└── requester 
    └── main.js 
    └── requests.js 

或像這樣:

[email protected]:~/node_test$ tree 
. 
└── main.js 
└── requests.js 

那麼你需要修改你的main.js,看起來像這樣:

var r = require('./requests'); 

r.updateDB(); 

希望這可以解決您的問題,如果不是的話,我會很樂意再看看它。如果你可以用你的目錄的樹打印輸出來編輯你的OP,那會很有幫助。

----- -----編輯

有人問,如果一個文件權限錯誤可能會導致此相同類型的問題。這裏有一個例子:

@computer:~/node_test$ sudo chown root:root requester/requests.js 
@computer:~/node_test$ sudo chmod 700 requester/requests.js 
@computer:~/node_test$ node main.js 

fs.js:338 
    return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); 
      ^
Error: EACCES, permission denied './node_test/requester/requests.js' 

所以在文件本身有它拋出不同的錯誤權限問題的話;但是,如果我們的文件夾只爲root訪問,那麼你就會有這樣的事情:

@computer:~/node_test$ sudo chown root:root requester/ 
@computer:~/node_test$ sudo chmod 700 requester/ 
@computer:~/node_test$ node main.js 

module.js:340 
    throw err; 
    ^
Error: Cannot find module './requester/requests' 

因此,作爲@akaphenom正確地指出,你可能與./requester文件夾的權限問題。您可以通過以下方式查看權限:

@computer:~/node_test$ ls -l 

祝你好運解決你的問題。

+0

是啊。這是我期望他遇到的問題類型。它也可能是一個文件權限問題 - 不是? – akaphenom 2014-10-06 11:15:20

+0

@akaphenom如果這是一個文件權限問題,你會得到一個不同的錯誤,我相信。我將用測試用例編輯我的帖子,以解決權限問題。 – thtsigma 2014-10-06 14:32:52

+0

@akaphenom其實,在進一步尋找。如果文件夾本身有權限問題,那麼你會得到同樣的錯誤。 – thtsigma 2014-10-06 14:42:39

相關問題