開始使用 Node.js 和 Mongo DB 創建 REST api 所以我想知道一些事情。我收到此錯誤
Cannot find module '../models/book
更詳細的錯誤如下所示:
PS D:\node_apps\mongo1> npm start
> mongo1@0.0.0 start D:\node_apps\mongo1
> node ./bin/www
internal/modules/cjs/loader.js:892
throw err;
^
Error: Cannot find module '../models/book'
Require stack:
- D:\node_apps\mongo1\routes\users.js
- D:\node_apps\mongo1\app.js
- D:\node_apps\mongo1\bin\www
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
at Function.Module._load (internal/modules/cjs/loader.js:745:27)
at Module.require (internal/modules/cjs/loader.js:961:19)
at require (internal/modules/cjs/helpers.js:92:18)
at Object.<anonymous> (D:\node_apps\mongo1\routes\users.js:3:12)
at Module._compile (internal/modules/cjs/loader.js:1072:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Module.require (internal/modules/cjs/loader.js:961:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'D:\\node_apps\\mongo1\\routes\\users.js',
'D:\\node_apps\\mongo1\\app.js',
'D:\\node_apps\\mongo1\\bin\\www'
]
PS D:\node_apps\mongo1> npm start
> mongo1@0.0.0 start D:\node_apps\mongo1
> node ./bin/www
internal/modules/cjs/loader.js:892
throw err;
^
Error: Cannot find module './routes/books'
Require stack:
- D:\node_apps\mongo1\app.js
- D:\node_apps\mongo1\bin\www
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
at Function.Module._load (internal/modules/cjs/loader.js:745:27)
at Module.require (internal/modules/cjs/loader.js:961:19)
at require (internal/modules/cjs/helpers.js:92:18)
at Object.<anonymous> (D:\node_apps\mongo1\app.js:9:15)
at Module._compile (internal/modules/cjs/loader.js:1072:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Module.require (internal/modules/cjs/loader.js:961:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'D:\\node_apps\\mongo1\\app.js',
'D:\\node_apps\\mongo1\\bin\\www'
]
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! mongo1@0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the mongo1@0.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\emi\AppData\Roaming\npm-cache\_logs\2021-11-23T17_18_24_504Z-debug.log
PS D:\node_apps\mongo1>
PS D:\node_apps\mongo1>
我的源代碼是這樣看的:
資料庫.js
var mongoose = require('mongoose');
mongoose.connect('mongodb srv://admin:****@cluster0.cqryc.mongodb.net/test', {useNewUrlParser: true});
var conn = mongoose.connection;
conn.on('connected',function(){
console.log('Connected');
});
module.exports = conn;
用戶模型.js
var db = require('../database');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var BookSchema = new Schema({
title : String,
author : String,
category : String,
});
module.exports = mongoose.model('Book',BookSchema);
用戶.js
var express = require('express');
var router = express.Router();
var Book = require('../models/book');
router.get('/', function(req, res) {
Book.find({}).exec(function(err,books){
if(err){
res.send('error occured');
}else{
res.json(books);
}
});
});
router.get('/:id', function(req, res) {
Book.findOne({
_id : req.params.id
}).exec(function(err,books){
if(err){
res.send('error occured');
}else{
res.json(books);
}
});
});
router.post('/',function(req,res){
var newBook = new Book();
newBook.title = req.body.title;
newBook.author = req.body.author;
newBook.category = req.body.category;
newBook.save(function(err,book){
if(err){
res.send('error saving book');
}else{
res.send(book);
}
})
})
module.exports = router;
和App.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
const books = require('./routes/books');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/books', books);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
app.use((err, req, res, next) => {
// console.log(err);
err.statusCode = err.statusCode || 500;
err.message = err.message || "Internal Server Error";
res.status(err.statusCode).json({
message: err.message,
});
});
module.exports = app;
我究竟做錯了什么?請我需要指導。我正在努力讓它發揮作用,只是在這里遺漏了一些東西。
uj5u.com熱心網友回復:
下面是您嘗試查找模塊的位置。您是說它位于您用來在此處運行應用程式的目錄之外的目錄中 ../
這是你的意圖嗎?
var Book = require('../models/book');
Book 就像一個在您的應用程式中創建的類,所以如果這是正確的,您需要在層次結構中定位它并正確參考它。如果它與起始 .js 檔案位于同一位置,則它應該是:
var Book = require('./models/book');
編輯 - 我剛剛看到了出口。
用戶模型.js
var db = require('../database');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var BookSchema = new Schema({
title : String,
author : String,
category : String,
});
module.exports = mongoose.model('Book',BookSchema);
在底部,您似乎要將其匯出為書籍。我不是這里的大師,但是每當我匯出一個類時,我都會使用它來參考它
var Book = require('userModel.js')
所以 .js 檔案名。
uj5u.com熱心網友回復:
我讓它作業。Schema=> Tables ,我參考了非常錯誤的資訊,但我一切正常
所以var Book = require('../models/book');我最終得到了這個
var Book = require('../models/userModel');
然后我也添加了這個 app.use('/books', books);
它解決了所有問題。也設定 Cors,一切都很好并且正常作業 <3
謝謝大家,謝謝克雷格!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364489.html
