2017-02-18 161 views
0

我知道這個問題已經提交了無數次,但即使瀏覽了X個問題和可能的解決方案之後,這個錯誤依然存在。找不到模塊XYZ

我在目錄模塊中有一個名爲tournament.js的文件。 tournament.js需要model.js,它位於完全相同的目錄中。結構如下:

app/ 
    modules/ 
    model.js 
    tournament.js 

tournament.js樣子:

const Model = require('./model'); 

class Tournament extends Model { 

    constructor() { 
    super(); 
    } 

    static create() { 

    } 
} 

即使WebStorm說,在require()的路徑是正確的,但我的控制檯仍說:Uncaught Error: Cannot find module './model'

我在想什麼?

編輯:我使用節點V6.4.0和電子v1.4.15

+0

你嘗試'const的模型=要求(」 ./ model.js');'?? – Panther

+0

是的,同樣的錯誤。 – Fortuna

+0

每當發生這種情況時,我總是在失敗的require(...)之前添加一個'console.log(__ dirname)',以使文件夾名稱正確。多數情況下,我正在*錯誤的文件夾*中工作。 – adelphus

回答

1

好@adelphus給了我正確的暗示。我用console.log(__dirname)輸出了路徑,這不是我所期望的:是的,我一直在錯誤的路徑,因爲我認爲相對路徑require()需要的是相對於我目前工作的文件(這是比賽。 JS),事實並非如此。

相反require()需要從應用程序根在這種情況下是相對於路徑./app/models/model.js

+0

節點確實使用'./'來表示與當前文件的目錄相同 - 「[*'circle.js'必須和'foo.js'在require('./ circle')'目錄下相同找到它*。(https://nodejs.org/dist/v6.4.0/docs/api/modules.html#modules_file_modules) –

+0

好吧,它不適合我。也許我也應該注意到,我是使用gulp和我的自動化任務將我的代碼從'./ src'複製到'。/ build'文件夾中,但具有相同的文件夾結構(因此'src'和'build'與結構相同),然後gulp運行'electron build/main.js'。'__dirname'然後輸出一個完整的不同的路徑,而不是'。build/app/models',它是'./ build',我不知道爲什麼。 – Fortuna