我正在尝试运行project。但它给出了一个错误
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! lets-chat@0.4.2 start: `node app.js` npm ERR! Exit status 8 npm ERR! npm ERR! Failed at the lets-chat@0.4.2 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
和 app.js 文件为:
'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();
});
});
答案 0 :(得分:1)
您必须在根目录中运行npm install
,然后我发现您应该更改一个非常旧的依赖项,请执行以下操作:
打开文件package.json
并替换它:
"passport": "^0.2.2",
"passport-http": "^0.2.2",
有了这个:
"passport": "~0.3",
"passport-http": "~0.3",
然后运行npm install
准备就绪时npm start
工作正常。
答案 1 :(得分:0)
此错误可能令人沮丧且不一致,解决方案是在本地和全局卸载软件包,并使用合适的版本重新安装或更新模块。
尝试在不卸载的情况下升级模块有时会导致此错误
npm uninstall <package>
npm uninstall <package> -g
npm install <package>