2017-07-26 134 views
0

我使用快遞做一些路由,我想打電話從signup.js一個靜態的JavaScript文件中的函數,但我得到一個錯誤說快速:找不到模塊?

Error: Cannot find module './js/list.js' 

我的目錄結構如下:

app.js 
-routes/signup.js 
-public/js/list.js 

在我app.js文件,我有這樣一行:

app.use(express.static(path.join(__dirname, 'public'))); 

在我signup.js,我有:

var listModel = require('./js/list.js'); 

list.js文件包含:

module.exports.list = function (userName, category) { 
    return ({ 
    "owner" : userNameName, 
    "category" : category, 
    "completed" : [], 
    "planned" : [], 
    "current" : [], 
    "dropped" : [], 
    "onHold" : [] 
    }); 
} 

還有什麼我以導入列表功能爲我的註冊文件丟失?謝謝!

+1

從'routes/signup.js'中看來我需要'require('../ public/js/list.js);' –

+0

哦,哇,謝謝,這工作! –

回答

0

由於它們有不同的signup和列表有不同的父目錄,所以NodeJS require函數不會考慮它們的兄弟。因此,你需要寫

var listModel = require('../public/js/list.js'); 

routes/signup.js

裏面如果你有一個文件public/test.js你確實可以使用

var listModel = require('./js/list.js'); 

需要從內它的依賴。

+0

工作,謝謝! –

0

的要求模塊路徑應該是:

var listModel = require('../public/js/list'); // it is fine to have the file extension 
0

在你的情況,因爲signup.js是在不同的文件夾list.js,你必須指定它的完整路徑。

var listModel = require('../public/js/list.js');

app.use(express.static(path.join(__dirname, 'public')));意味着,當你去localhost(或任何路由應用託管),你將有機會獲得該文件夾。所以這意味着當你去localhost:3000/js/list.js你可以訪問該文件夾。