`npm`错误为`错误:无法找到模块` - 如何修复

时间:2016-11-24 09:14:07

标签: node.js npm

在我的应用程序中,当我尝试调用该服务时,我收到的错误如下:

module.js:327
    throw err;
    ^

Error: Cannot find module '/api/sessions'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (C:\Tutorials\try\ModernWebApp\server.js:13:9)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)
    at node.js:968:3
 [14:38:53] [nodemon] app crashed - waiting for file changes before starting...

这是我的server.js文件:

var express = require('express');
var bodyParser = require('body-parser');


var app = express();

app.use(express.static( __dirname + '/assets'))

app.use(express.static( __dirname + '/templates'))

app.use(bodyParser.json());
//if i remove both this 2 lines, no issues come.
app.use(require('/api/sessions', require( __dirname + '/controllers/api/sessions')));
app.use(require('/api/users', require('./controllers/api/users')));



app.get('/', function( req, res ){
    res.sendFile( __dirname + '/layouts/app.html');
})

app.listen( 8888,  function(){
    console.log('app listening!' + 8888 );
})

这里有什么问题,如何解决这个问题。这两个文件只不过是从前端处理查询。

session.js示例:

var router      = require('express').Router();
var bcrypt      = require('bcryptjs');
var jwt         = require('jwt-simple');
var User        = require('../../models/user');
var config      = require('../../config');


router.post('/sessions', function( req, res, next ) {

    User.findOne({
        username: req.body.username,
    }).select('password').select('username')
    .exec(function( err, user ) {
        if( err ) { return next( err )}

        if(!user) { return res.send(401)}

        bcrypt.compare(req.body.password, user.password, function( err, valid ) {

            if( err ) { return next( err )}

            if(!valid) { return res.send(401)}

            var token = jwt.encode({username:user.username}, config.secret);

            res.send( token );

        })


    })

});

module.exports = router;

2 个答案:

答案 0 :(得分:1)

尝试使用。

app.use(require('/api/sessions'));
app.use(require('/api/users'));

如果这不起作用,请给出您想要的模块的正确路径。因为require函数只接受一个参数,即模块ID在字符串中。

https://nodejs.org/api/modules.html#modules_module_require_id

答案 1 :(得分:1)

您只需使用require('/api/sessions'),因此节点会在您的sessions.js中查找root dir(/)文件,而不是您的工作目录。

也许你应该试试require('./api/sessions')