Error: ENOENT, no such file or directory '/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript/app/models

16,578

You have to run npm install in the root directory, then I found there is a very old dependency you should change, do this:

Open file package.json and replace this:

"passport": "^0.2.2",
"passport-http": "^0.2.2",

With this:

"passport": "~0.3",
"passport-http": "~0.3",

Then run npm install

And when ready run npm start

It works fine.

Share:
16,578
Admin
Author by

Admin

Updated on June 05, 2022

Comments

  • Admin
    Admin almost 2 years

    I am trying to run a project . but its giving an error

    fs.js:666
      return binding.readdir(pathModule._makeLong(path));
                     ^
    Error: ENOENT, no such file or directory '/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript/app/models'
        at Object.fs.readdirSync (fs.js:666:18)
        at require_tree (/home/shubham/Documents/Node/lets-chat/node_modules/require-tree/index.js:37:24)
        at Object.<anonymous> (/home/shubham/Documents/Node/lets-chat/app.js:33:14)
        at Module._compile (module.js:456:26)
        at Object.Module._extensions..js (module.js:474:10)
        at Module.load (module.js:356:32)
        at Function.Module._load (module.js:312:12)
        at Function.Module.runMain (module.js:497:10)
        at startup (node.js:119:16)
        at node.js:935:3
    
    npm ERR! [email protected] start: `node app.js`
    npm ERR! Exit status 8
    npm ERR! 
    npm ERR! Failed at the [email protected] start script.
    npm ERR! This is most likely a problem with the lets-chat package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR!     node app.js
    npm ERR! You can get their info via:
    npm ERR!     npm owner ls lets-chat
    npm ERR! There is likely additional logging output above.
    npm ERR! System Linux 3.16.0-49-generic
    npm ERR! command "/usr/bin/node" "/usr/bin/npm" "start"
    npm ERR! cwd /home/shubham/Documents/Node/lets-chat
    npm ERR! node -v v0.10.37
    npm ERR! npm -v 1.4.28
    npm ERR! code ELIFECYCLE
    npm ERR! 
    npm ERR! Additional logging details can be found in:
    npm ERR!     /home/shubham/Documents/Node/lets-chat/npm-debug.log
    npm ERR! not ok code 0
    

    and app.js file is:

    'use strict';
    
    process.title = 'letschat';
    
    require('colors');
    
    var _ = require('lodash'),
        fs = require('fs'),
        express = require('express.oi'),
        i18n = require('i18n'),
        bodyParser = require('body-parser'),
        cookieParser = require('cookie-parser'),
        compression = require('compression'),
        helmet = require('helmet'),
        http = require('http'),
        nunjucks = require('nunjucks'),
        mongoose = require('mongoose'),
        migroose = require('./migroose'),
        connectMongo = require('connect-mongo'),
        all = require('require-tree'),
        psjon = require('./package.json'),
        settings = require('./app/config'),
        auth = require('./app/auth/index'),
        core = require('./app/core/index');
    
    var MongoStore = connectMongo(express.session),
        httpEnabled = settings.http && settings.http.enable,
        httpsEnabled = settings.https && settings.https.enable,
        models = all('./app/models'),
        middlewares = all('./app/middlewares'),
        controllers = all('./app/controllers'),
        app;
    
    //
    // express.oi Setup
    //
    if (httpsEnabled) {
         app = express().https({
            key: fs.readFileSync(settings.https.key),
            cert: fs.readFileSync(settings.https.cert)
        }).io();
    } else {
        app = express().http().io();
    }
    
    if (settings.env === 'production') {
        app.set('env', settings.env);
        app.set('json spaces', undefined);
        app.enable('view cache');
    }
    
    // Session
    var sessionStore = new MongoStore({
        url: settings.database.uri,
        autoReconnect: true
    });
    
    // Session
    var session = {
        key: 'connect.sid',
        secret: settings.secrets.cookie,
        store: sessionStore,
        cookie: { secure: httpsEnabled },
        resave: false,
        saveUninitialized: true
    };
    
    // Set compression before any routes
    app.use(compression({ threshold: 512 }));
    
    app.use(cookieParser());
    app.io.session(session);
    
    auth.setup(app, session, core);
    
    // Security protections
    app.use(helmet.frameguard());
    app.use(helmet.hidePoweredBy());
    app.use(helmet.ieNoOpen());
    app.use(helmet.noSniff());
    app.use(helmet.xssFilter());
    app.use(helmet.hsts({
        maxAge: 31536000,
        includeSubdomains: true,
        force: httpsEnabled,
        preload: true
    }));
    app.use(helmet.contentSecurityPolicy({
        defaultSrc: ['\'none\''],
        connectSrc: ['*'],
        scriptSrc: ['\'self\'', '\'unsafe-eval\''],
        styleSrc: ['\'self\'', 'fonts.googleapis.com', '\'unsafe-inline\''],
        fontSrc: ['\'self\'', 'fonts.gstatic.com'],
        mediaSrc: ['\'self\''],
        objectSrc: ['\'self\''],
        imgSrc: ['*']
    }));
    
    var bundles = {};
    app.use(require('connect-assets')({
        paths: [
            'media/js',
            'media/less'
        ],
        helperContext: bundles,
        build: settings.env === 'production',
        fingerprinting: settings.env === 'production',
        servePath: 'media/dist'
    }));
    
    // Public
    app.use('/media', express.static(__dirname + '/media', {
        maxAge: '364d'
    }));
    
    // Templates
    var nun = nunjucks.configure('templates', {
        autoescape: true,
        express: app,
        tags: {
            blockStart: '<%',
            blockEnd: '%>',
            variableStart: '<$',
            variableEnd: '$>',
            commentStart: '<#',
            commentEnd: '#>'
        }
    });
    
    function wrapBundler(func) {
        // This method ensures all assets paths start with "./"
        // Making them relative, and not absolute
        return function() {
            return func.apply(func, arguments)
                       .replace(/href="\//g, 'href="./')
                       .replace(/src="\//g, 'src="./');
        };
    }
    
    nun.addFilter('js', wrapBundler(bundles.js));
    nun.addFilter('css', wrapBundler(bundles.css));
    nun.addGlobal('text_search', false);
    
    // i18n
    i18n.configure({
        directory: __dirname + '/locales',
        defaultLocale: settings.i18n && settings.i18n.locale || 'en'
    });
    app.use(i18n.init);
    
    // HTTP Middlewares
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({
        extended: true
    }));
    
    // IE header
    app.use(function(req, res, next) {
        res.setHeader('X-UA-Compatible', 'IE=Edge,chrome=1');
        next();
    });
    
    //
    // Controllers
    //
    _.each(controllers, function(controller) {
        controller.apply({
            app: app,
            core: core,
            settings: settings,
            middlewares: middlewares,
            models: models,
            controllers: controllers
        });
    });
    
    //
    // Mongo
    //
    
    mongoose.connection.on('error', function (err) {
        throw new Error(err);
    });
    
    mongoose.connection.on('disconnected', function() {
        throw new Error('Could not connect to database');
    });
    
    //
    // Go Time
    //
    
    function startApp() {
        var port = httpsEnabled && settings.https.port ||
                   httpEnabled && settings.http.port;
    
        var host = httpsEnabled && settings.https.host ||
                   httpEnabled && settings.http.host || '0.0.0.0';
    
    
    
        if (httpsEnabled && httpEnabled) {
            // Create an HTTP -> HTTPS redirect server
            var redirectServer = express();
            redirectServer.get('*', function(req, res) {
                var urlPort = port === 80 ? '' : ':' + port;
                res.redirect('https://' + req.hostname + urlPort + req.path);
            });
            http.createServer(redirectServer)
                .listen(settings.http.port || 5000, host);
        }
    
        app.listen(port, host);
    
        //
        // XMPP
        //
        if (settings.xmpp.enable) {
            var xmpp = require('./app/xmpp/index');
            xmpp(core);
        }
    
        var art = fs.readFileSync('./app/misc/art.txt', 'utf8');
        console.log('\n' + art + '\n\n' + 'Release ' + psjon.version.yellow + '\n');
    }
    
    function checkForMongoTextSearch() {
        if (!mongoose.mongo || !mongoose.mongo.Admin) {
            // MongoDB API has changed, assume text search is enabled
            nun.addGlobal('text_search', true);
            return;
        }
    
        var admin = new mongoose.mongo.Admin(mongoose.connection.db);
        admin.buildInfo(function (err, info) {
            if (err || !info) {
                return;
            }
    
            var version = info.version.split('.');
            if (version.length < 2) {
                return;
            }
    
            if(version[0] < 2) {
                return;
            }
    
            if(version[0] === '2' && version[1] < 6) {
                return;
            }
    
            nun.addGlobal('text_search', true);
        });
    }
    
    mongoose.connect(settings.database.uri, function(err) {
        if (err) {
            throw err;
        }
    
        checkForMongoTextSearch();
    
        migroose.needsMigration(function(err, migrationRequired) {
            if (err) {
                console.error(err);
            }
    
            else if (migrationRequired) {
                console.log('Database migration required'.red);
                console.log('Ensure you backup your database first.');
                console.log('');
                console.log(
                    'Run the following command: ' + 'npm run migrate'.yellow
                );
    
                return process.exit();
            }
    
            startApp();
        });
    });