node.js安装 - 如何使用Node.js解决“无法找到模块”错误?




node.js教程 node.js中文 (20)

webpack-dev-middleware使用webpack时遇到此问题。

已将单个文件转换为文件夹

观察者似乎没有看到新的文件夹,模块现在缺失。

通过重新启动进程来修复。

从GitHub中拉下一个模块并按照指示构建它之后,我尝试使用以下命令将其拉入现有项目中:

> npm install ../faye

这看起来有诀窍:

> npm list
/home/dave/src/server
└─┬ [email protected]
  ├── [email protected]
  ├── [email protected]
  └── [email protected]

但Node.js找不到该模块:

> node app.js
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'faye'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)

我真的很想明白这里发生了什么,但是我在接下来的位置上有点不知所措。 有什么建议么?


我可以添加一个地方来检查; 我试图使用的包是另一个我自己的包,我已经发布到一个私人NPM回购。 我忘记了正确配置package.json中的'main'属性。 因此,该软件包位于消费包的node_modules文件夹中,但我收到“无法找到模块”。 花了我几分钟才明白我的错误。 :-(


从您的项目中删除您的node_module根文件夹(例如: myApp )。 转到myApp文件夹,然后从终端输入以下命令

>myApp>npm install

它将安装您的项目所需的所有依赖模块。


在我的情况下,我有UNMET PEER DEPENDENCY [email protected]^3.0.0导致此错误消息,请参阅所有这些并使用--save再次安装缺少的模块

npm install redux --save

npm install --save module_name

例如,如果错误是:

{[错误:找不到模块'/root/.npm/form-data']代码:'MODULE_NOT_FOUND'}

那么你可以通过执行命令npm install --save form-data来解决这个问题。


我有一个非常类似的问题。 删除整个node_modules文件夹并重新安装对我node_modules

rm -rf node_modules
npm install

如果您使用nvm,请检查是否为正确的Node.js版本编译了与其他库绑定的现有node_modules。

我有同样的错误。 原因如下:我们使用nvm,因为我们在服务器上运行两个应用程序,一个需要Node.js 5.6,因为它使用node-gd(目前不能在Node.js 6上运行),另一个需要Node.js 6. Node.js 6是apt-get安装。

我们也使用pm2工具进行部署。

因此,默认设置是pm2进程在nvm无效时启动,因此它使用Node.js(版本6)的apt-get安装。 所以主pm2守护进程以Node.js 6开头。如果我以fork模式运行应用程序,它们将在单独的进程中启动,并且nvm设置将生效。 当我以集群模式运行应用程序时 - 它们继承非nvm环境。

所以当我尝试切换到群集模式时,应用程序无法启动,因为为5.6编译的绑定失败并显示此消息。

当nvm设置生效时,我通过重新启动pm2解决了这个问题。 还应该修复启动脚本。


我有简单的解决方案来解决这个问题。

只需删除C:\ Users \ UserName \ AppData \ Roaming \ npm \

然后安装节点。

现在你的问题将得到解决。


检查环境变量NODE_PATH是否正确设置并指向node_modules路径。 nodejs使用此变量来搜索库


首先,是的,我的答案的一部分肯定有助于解决OP发布的错误 。 其次,在尝试下面的步骤之后,我遇到了一些其他的错误,所以也写了这些解决方案。

(嘘!我不知道我是否成功地帮助解决了上述错误,或者如果我已经打破了一些规则或格式的回答,但是我遇到了上述错误和其他一些错误,并且我花了很多时间找到这些错误的正确解决方案,我正在编写完整的解决方案,因为如果其他人也面临这些错误,那么他会希望在这里得到解决方案。)

因此,增加并详细说明提供的答案,并增加我的个人经验,这里是:

我对整个e2e和单元测试部分是新手。 我开始从Protractor看这部分。 现在我已经有了写测试的文件,但是我必须运行测试。

我已经安装了所有必需的软件和工具,但是当我最初运行测试代码时, gulp itest ,我得到了'找不到模块'的错误 。 在经历了许多不同的问题之后,我发现了一个我认为可以帮助获得解决方案的答案。

该人曾建议在我的项目文件夹中运行命令npm install

这样做的理由是更新我们的项目文件夹中的node-modules文件夹,其中包含所有必需的和必需的文件和依赖关系。

(下面的部分可能与这个问题无关,但如果有人遇到我遇到的相同情况,可能会有帮助。)

上面的步骤肯定解决了我以前的错误,但抛出了一个新的! 这次错误是Could not find chromedriver at '..\node_modules\protractor\selenium\chromedriver'

然而,这个错误的解决方案对我来说很愚蠢(也很搞笑)。 我的文件夹中已经有了chromedriver文件。 但是,事实证明,上述错误是因为我的chromedriver文件在文件夹中,而不是在 chromedriver文件夹内。 所以,创建一个chromedriver文件夹并复制chromedriver文件解决了我的问题!

另外,对于错误:等待WebDriver服务器超时 ,可以将这行代码添加到exports.config exports.config{} conf.js文件中:

seleniumAddress: 'http://localhost:8080/'

希望这可以帮助!


仅运行以下命令:

npm install

它会将所有必需的模块安装在node_modules文件夹中。


当第一个npm安装由于某种原因(npm的SIGINT)崩溃,或者延迟太长或数据损坏时,会发生这种情况。 再次尝试npm安装不会保存问题。

首先检查npm时出错,所以最好的选择是删除文件并重新启动npm install。


指定restler文件夹的路径,该文件夹位于node_modules文件夹内部,如下所示:var rest = require('./ node_modules / restler');

这对我有效。


我昨天经历了这个错误。 花了我一段时间才意识到package.json中的main条目指向我移动的文件。 一旦我更新错误消失并且包工作。


更改目录并指向您当前的项目文件夹,然后“npm install”。 。

这会将所有依赖项和模块安装到您的项目文件夹中。


也许就像我一样,您将“视图引擎”设置为不存在的引擎,或试图使用未注册的模板引擎。 确保你使用: app.engine('engine name',engine) app.set('view engine','engine name')


我试图发布我自己的软件包,然后将其包含在另一个项目中。 由于我已经构建了第一个模块,所以我遇到了这个问题。 我使用ES2015导出创建模块,例如可以说模块看起来像这样:

export default function(who = 'world'){
    return `Hello ${who}`;
}

经过巴贝尔编译并出版之前:

'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});

exports.default = function () {
    var who = arguments.length <= 0 || arguments[0] === undefined ? 'world' : arguments[0];


    return 'Hello ' + who;
};

因此,在npm install module-name在另一个项目(无ES2015)中npm install module-name ,我不得不这样做

var hello = require('module-name').default;

要真正获得导入的包。

希望有所帮助!


如果您require在package.json中缺少或不正确的main字段的模块,可能会遇到此错误。 虽然模块本身已安装,但npm / node必须使用单个.js文件作为模块的入口点。 如果main字段不存在,它将默认在模块文件夹中查找index.js 。 如果你的模块的主文件叫做index.js,它将不能require它。

在将基于浏览器的模块转变为CommonJS require模块时发现; browserify不关心失踪的main ,所以错误没有被注意到。


对于TypeScript用户,如果要导入内置的Node模块(例如httppathurl ),并且出现错误,例如"Cannot find module "x"则可以通过运行修复错误

npm install @types/node --save-dev

该命令会将NodeJS TypeScript定义导入到您的项目中,从而允许您使用Node的内置模块。


这是不可能复制问题的,所以我准备了一个工作实例。 [Github回购。]

它为Openshift精心设计,因为我看到了它的环境变量的使用(它可以很容易地适应其他用例)。

我对原始概念做了一些修改:

  1. 替换旧的,已弃用的(快速)捆绑中间件用法。
  2. 使用Class而不是self = this概念
  3. 使用Github代替Facebook进行用户登录...
  4. 包括一些基本功能,以包括新用户到数据库
  5. 缺少一些原始模块(可以轻松包含)

我希望它可以作为一个起点。

 // .: DB Configuration :.
const mysql = require('mysql'); 
var dbconf = {host:process.env.OPENSHIFT_MYSQL_DB_HOST,port:process.env.OPENSHIFT_MYSQL_DB_PORT,user:process.env.OPENSHIFT_MYSQL_DB_USERNAME,password:process.env.OPENSHIFT_MYSQL_DB_PASSWORD,database:process.env.OPENSHIFT_APP_NAME,socket:process.env.OPENSHIFT_MYSQL_DB_SOCKET}}    
const dbconn = mysql.createConnection(dbconf); /*or create a pool*/ dbconn.connect();
// .: Express & Other Middleware Modules :.
var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var cookieParser = require('cookie-parser');
var serveStatic = require('serve-static');
// .: Sessions :.
var passport = require('passport');
var GitHubStrategy = require('passport-github2');
var session = require('express-session');
var MySQLStore = require('express-mysql-session')(session);
var sessionStoreConf = {
  connectionLimit:1,checkExpirationInterval:900000,expiration:86400000,
  createDatabaseTable:true,schema:{tableName:'LoginRequests',columnNames:{session_id:'loginID',expires:'expires',data:'data'}}
};
var sessionStore = new MySQLStore(sessionStoreConf,dbconn);
// .: Server (class) :.
class Server {
  constructor(port, ip){
    this.app = express();
    this.app.use(cookieParser('secret'));
    this.app.use(session({
      key:'session_cookie_name',
      secret:'secret',
      cookie:{maxAge:3600000,secure:false},
      store: sessionStore,
      resave:false,
      saveUninitialized:false
    }));
    this.app.use(passport.initialize());
    this.app.use(passport.session());
    this.app.use(serveStatic(path.join(__dirname,'public')))
    this.app.listen(port,ip,function(){console.log('[i] Application worker started.');});
    //require('./routes/site.js'); //~Example (routes/site.js) :
      this.app.get("/",function(req,res){res.send("<a href='./auth/github'>Click here to login (GitHub)</a>");})
      this.app.get('/auth/github',passport.authenticate('github',{scope:['user:email']}));
      this.app.get('/auth/github/callback',passport.authenticate('github',{failureRedirect:'/'}),function(req,res){res.redirect('/success');});
      // route for valid logins
      this.app.get('/success', function(req, res){ 
        if(req.user){ console.log(req.user);  res.send(req.user); }
        else{ res.redirect('/login'); }
      });
      // route to check the sessionStore table entries in the browser
      this.app.get('/sessions',function(req,res){
        dbconn.query("SELECT * FROM LoginRequests",function(err,rows){
          if(err){console.log(err);}else{
            if(rows.length!=0){
              res.send(JSON.stringify(rows));
              console.log(rows);
            }else{res.send("No LoginRequests found");}
          }
        });
      });
    //require('./config/passport.js')(passport);  //~Example (config/passport.js) :
      passport.use(new GitHubStrategy(
        {clientID:"clientID",clientSecret:"clientSecret",callbackURL:"callbackURL"},
        function(token, tokenSecret, user, cb){CheckUser('github',user,cb);}
      ));
    }
}
const server = new Server(process.env.OPENSHIFT_NODEJS_PORT,process.env.OPENSHIFT_NODEJS_IP);
// .: Passport : Serialize & Deserialize User :.
passport.serializeUser(function(user, done){
 console.log('[passport] serializeUser');
 done(null,user.id);
});
passport.deserializeUser(function(id, done) {
 console.log('[passport] deserializeUser');
  dbconn.query("SELECT * FROM Users WHERE id=?",[id],function(err,rows){
  if(err){console.log(err);}else{
    if(rows.length!=0){ done(err,rows[0]); }
    else{ done(err,null); }
  }
 });
});

//:Check if user exists:
function CheckUser(platform,user,cb){
  dbconn.query("SELECT * FROM Users WHERE id=?",[user.id],function(err,rows){
  if(err){console.log(err); cb(err,null);}else{
    if(rows.length!=0){cb(null,user);}
    else{CreateUser(platform,user,cb);}
    }
  });
}
  //:Create new user:
function CreateUser(platform,user,cb){
  switch(platform){
    case "github": 
      var newUserObj  = {id:user.id,platform:platform,email:user.emails[0].value};
      dbconn.query("INSERT INTO Users SET ?",newUserObj,function(err){
        if(err){console.log(err); cb(err,null);}else{cb(null,user);}
      });
    break;
    default: console.log("[error] (createUser) : platform not implemented :",platform); cb(err,null); break;
  }
}




node.js