Nodejs require引用别的文件夹下包的问题
Nodejs require引用别的文件夹下包的问题
nodejs开发入门里面,用express新建一个工程,我在工程目录下新建一个models文件夹,在models文件夹里新建了一个包user.js,想在另外一个文件夹routes下的index包中引用这个包:
var User=require(’./models/user.js’);
或 var User=require(’./models/user’);
都会提示,
请问各位大虾,这个改怎么引用?
Nodejs require引用别的文件夹下包的问题
在使用 Node.js 开发时,经常会遇到需要从不同文件夹引用模块的情况。例如,你可能有一个 models
文件夹用于存放数据模型,而这些模型需要在 routes
文件夹中的路由处理程序中被引用。
问题描述
假设你在 models
文件夹中创建了一个名为 user.js
的文件,并希望在 routes
文件夹中的 index.js
文件中引用它。但是当你尝试通过以下方式引入时:
var User = require('./models/user.js');
或者
var User = require('./models/user');
都可能会出现错误,提示找不到模块。
解决方案
为了解决这个问题,你需要确保 Node.js 能够正确找到你的模块。这通常涉及到正确设置路径,使用相对路径或绝对路径。
示例代码
假设你的项目结构如下:
/myapp
/models
user.js
/routes
index.js
app.js
models/user.js
// models/user.js
module.exports = class User {
constructor(name) {
this.name = name;
}
sayHello() {
return `Hello, ${this.name}!`;
}
};
routes/index.js
// routes/index.js
const path = require('path');
const User = require(path.join(__dirname, '../models/user'));
const user = new User('Alice');
console.log(user.sayHello());
app.js
// app.js
const express = require('express');
const router = require('./routes/index');
const app = express();
app.use('/', router);
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
解释
- 路径设置:使用
path.join
方法可以动态地将相对路径转换为正确的绝对路径。 - 模块导出:在
models/user.js
中,我们使用module.exports
导出了一个类。 - 引用模块:在
routes/index.js
中,我们使用require
引用了models/user.js
文件中导出的类。
通过这种方式,你可以确保 Node.js 能够正确找到并加载所需的模块。
前面不要加点改为, var User=require(’/models/user’);或者var User=require(’/models/user.js’);请注意只有在文件模块在同路径下时才加点,例如user.js和index.js在同依路佳下,才使用 var User=require(’./user’)或者 var User=require(’./user.js’)
谢谢,我把点去了试了也不行,现在放在一个同一个目录下~可以了~~
使用(’…/models/user’),两个点表示引用的是上层目录
谢谢了~~~明白了~