我正在使用Express进行一些路由,我想在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" : []
});
}
为了将列表功能导入我的注册文件,还有什么我遗漏的吗?谢谢!
答案 0 :(得分:0)
由于它们具有不同的signup
并且列表具有不同的父目录,因此NodeJS require函数不会将它们视为兄弟姐妹。因此你需要写
var listModel = require('../public/js/list.js');
在routes/signup.js
如果你有一个文件public/test.js
,你确实可以使用
var listModel = require('./js/list.js');
要求从中获取依赖。
答案 1 :(得分:0)
require模块路径应为:
var listModel = require('../public/js/list'); // it is fine to have the file extension
答案 2 :(得分: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
时,您将可以访问该文件夹。