2017-07-26 136 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你可以访问该文件夹。