节点错误:“;找不到模块'路由'&”;
Node error: "Cannot find module 'routes'"
更新12/14/15:我看到下一章指示读者创建"require"模块,所以我将继续前进。这本书似乎编辑得很差——也许他们重新安排了一些内容,没有注意到这些修改所造成的错误。根据下面我最初的问题,事情肯定出了问题。但即使这本书有一些错误,它也迫使我进行外部阅读来理解这些错误,并向SO发布问题,这有助于我学习。谢谢你们的帮助,伙计们!
我正在使用"使用MongoDB和Node.js进行Web开发-第二版"来学习Node和MongoDB(令人惊讶,对吧?)。这本书的方法似乎是让读者快速完成应用程序的创建,并只对过程中的事情进行部分解释。所以,当出现问题时,我不明白为什么会出错,也不知道如何解决。此外,到目前为止,我在书中发现了几个代码拼写错误,所以可能是其中一个导致了我的问题。
现在,我正试图运行这本书让我创建的server.js文件,但我遇到了一个错误。我对Node、Express和全栈还很陌生,所以错误可能是因为我缺少了一些非常简单和明显的东西。帮助
我的文件夹结构是:文件夹结构Node Modules文件夹有一堆文件夹,它们是我运行此命令时创建的:npm安装express morgan主体解析器cookie解析器方法覆盖错误处理程序express handlers--保存
到目前为止,我有两个文件,其中的内容是直接从书中复制的:server.js:
var express = require('express'),
config = require('./server/configure'),
app = express();
app.set('port', process.env.PORT || 3300);
app.set('views', __dirname + '/views');
app = config(app);
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(app.get('port'), function(){
console.log('Server up: http://localhost:' + app.get('port'));
});
和config.js,位于/server/文件夹中。书中这个文件的代码似乎有两个拼写错误,我已经在这个文件中更正了。(但也许我错过了其他人,或者"纠正"了错误。)
var path = require('path'),
routes = require('./routes'),
exphbs = require('express-handlebars'),
express = require('express'),
bodyParser = require('body-parser'),
cookieParser = require('cookie-parser'),
morgan = require('morgan'),
methodOverride = require('method-override'),
errorHandler = require('errorhandler');
module.exports = function(app){
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({'extended': true}));
app.use(bodyParser.json());
app.use(methodOverride());
app.use(cookieParser('some-secret-value-here'));
routes(app); //moving the routes to routes folder
app.use('/public/',
express.static(path.join(__dirname, '../public')));
if('development' === app.get('env')){
app.use(errorHandler());
}
return app;
};
在终端中,我输入node server.js
。我得到一个错误:尝试运行server.js 返回错误
在configure.js
文件中,我想我理解为什么会出现错误——routes = require('./routes'),
语句似乎需要一个还不存在的模块,因为这本书还没有描述如何创建它,而且它似乎不是通过早期的npm命令安装的。但是,我是新手(正如我一直说的那样),所以我可能错了。有人能帮我弄清楚这里出了什么问题吗?
此外,如果你碰巧想推荐一本学习Express的好书,我会洗耳恭听——也许我应该放弃这本书,从一本教更多基本知识的书开始,然后再创建一个示例应用程序。
您的理解是正确的。当你需要这样的文件
routes = require('./routes')
然后nodejs将在站点的根路径中查找routes.js文件。
由于你还没有创建那个文件,一旦你达到要求,它就会爆炸。
此外,路线通常是这样设置的
routes = require('./routes')
然后过一段时间,当你创建了快递应用程序时,你会
app.use('/', routes); //sets up these routes on a base '/' route for your site
然后在routes.js中,您可以执行类似的操作
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('hey this worked');
});
router.get('/another/route', function(req, res, next) {
res.json({ hello: 'world' });
});
module.exports = router;
我一直在使用同一本书,遇到了找不到模块./routes
的同样问题。
然而,在写这本书的时候,npm express的版本是4.16.4,它包含了路由模块。一个解决方案是安装这样的路线:
npm install express@4.16.4
或npm install express@4.16.4 routes@2.1.0
或npm install routes@2.1.0
我的MERN应用程序中有一个auth.js文件,在index.js中我将其用作app.use(require("./routes"));
。它工作得很好,但在一些代码更改后,它开始给出错误:
node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module './routes'
Require stack:
更改为:后
app.use(require('./routes/auth'))
它又开始工作了。所以,如果你来到这个页面,寻找这个错误,那么你可以尝试这个。
- 使用Ampersand.js路由模块化应用程序
- 在角度路由模块中使用“解析”有什么好处
- 将路由处理程序委托给NodeJS+Express中的其他模块
- 使用SammyJS和requireJS来路由模块
- 未能加载路由模块requirejs?杜兰达尔虫
- AngularJS从不同的模块路由到控制器
- 具有动态路由和动态依赖性的角度模块化
- 木偶:根据路由正则表达式启动和停止模块
- 来自另一个模块的 Angularjs 路由控制器
- 未捕获错误:无法加载路由模块(viewmodels/home/index).详细信息:'resourceName
- 为Express路由向Node js模块传递一个值
- 节点错误:“;找不到模块'路由'&”;
- 模块是否应该在express.js的所有路由中使用app.use进行配置
- 如何在angular.js中分别编写控制器、服务、路由和模块
- Node.js REST API服务中使用的基于资源的路由模块,或用于此类服务的其他有用模块
- 在Angular2的NGmodule中,我想基于Condition加载两组不同的路由模块
- Uncaught ReferenceError: app没有在控制器、模块和路由中定义
- Angular Animation在路由到外部模块时出错[Cannot read property 'play&
- 在angular2中如何在模块之间路由
- 支持模块化和多视图的主干路由