【问题标题】:Nodejs Error: Cannot find module .. in ec2Nodejs错误:在ec2中找不到模块..
【发布时间】:2016-07-08 18:10:19
【问题描述】:

我的项目树如下所示:

models/userStore.js

index.js

我正在使用以下命令在 index.js 中导出用户信息。 const UserStore = require('./models/UserStore');

它在我的本地机器上运行良好。当我在 ec2 中上传时,出现以下错误。

module.js:341
    throw err;
    ^

Error: Cannot find module '../models/UserStore'
    at Function.Module._resolveFilename (module.js:339:15)
    at Function.Module._load (module.js:290:25)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (/home/ec2-user/test/dist/index.js:13:17)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)

index.js

 'use strict';

const Hapi = require('hapi');
const HapiSwagger = require('hapi-swagger');
const server = new Hapi.Server();
const Joi = require('joi');
const jwt = require('jsonwebtoken');
const db = require('./db');
const UserStore = require('./models/UserStore');
UserStore.initialize();
const user = UserStore.users; 

server.connection({port: 3000});
server.register(require('./plugins/plugins.js'));

server.register([
    {
        'register': HapiSwagger    
    }
    ], (err) => {
        server.start( (err) => {
           if (err) {
                console.log(err);
            } else {
                console.log('Server running at:' + server.info.uri);
            }
        });
    });


var validate = function (request, decodedToken, callback) {
    var user = UserStore.users[decodedToken.email];
    if (!user) {
      return callback(null, false);
    }
    return callback(null, true, user);
};

server.register(require('hapi-auth-jwt'), function () {
  server.auth.strategy('token', 'jwt', { key: privateKey,
                                         validateFunc: validate,
                                         verifyOptions: { algorithms: [ 'HS256' ] }
                                       });
    server.route(require('./routes/endpoints/routes.js'));
});

【问题讨论】:

  • index.js 的开头添加console.log(process.env) 以测试NODE_PATH 值。
  • 添加异常的完整堆栈,请。不仅module.js:341 throw err; ^
  • 添加了完整的例外。
  • 谢谢,请加console.log(process.env)
  • 并发布完整的index.js 文件。

标签: node.js hapijs aws-ec2


【解决方案1】:

我解决了这个问题。问题是我的文件名是(userStore),当我导出时我使用了(UserStore)。由于 mac 不区分大小写,因此它在本地运行良好。由于 linux 文件系统区分大小写,因此会引发该错误。

更多详情:Can I force node.js require to be case sensitive?

【讨论】:

  • 遇到了完全相同的问题!幸运的是我找到了这个帖子
【解决方案2】:

如果您在任何地方导入了大写 Index.js,也会发生这种情况

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 2013-09-29
    • 2018-12-21
    • 2022-01-15
    相关资源
    最近更新 更多