2015-05-06 3 views
1

Я видел this on github и this section в руководстве по началу работы. Но я не могу заставить администратора показывать (localhost:3000/keystone возвращает 404)Как добавить Keystone.JS в существующее приложение Express.js?

Я просто хочу иметь доступ к Администратору и редактировать данные. Так что я просто добавил следующее в моем app.js

var keystone = require('keystone'); 
keystone.set('app', app); 
keystone.set('mongoose', mongoose); 
keystone.init({ 
    'name': 'project', 
    'auth': true, 
    'user model': 'user', 
    'mongo': process.env.MONGOLAB_URI || dbConfig.url, 
    'session': true, 
    'cookie secret': 'loUGL*gbp98bPIUBI*UY' 
}); 
keystone.import('models'); 
keystone.routes(app); 

Я использую узел 0.12+ и Экспресс 4.

Спасибо за вашу помощь

ответ

2

Там, кажется, несколько ошибок в том, что github guide (или написано для более старой версии трапецеидального искажения). А именно, следующие две строки, может возникнуть проблема:

keystone.static(app); 

keystone.mongoose.connect.on('error', handleDbErrorsFunc); 

Я заметил те из, и указал базу данных для моей LOCALHOST MongoDB. Я также справился с models/User.js из созданного вами проекта трапецеидального искажения. При том, что у меня есть элементы управления администратора работают (хотя и без CSS)

Если вы хотите сравнить заметки, вот мой отредактированный вариант Вашего гида:

var express = require('express'), 
    app = express(), 
    keystone = require('keystone'), 
    session = require('express-session'), 
    flash = require('connect-flash'), 
    serve = require('serve-static'), 
    favicon = require('serve-favicon'), 
    body = require('body-parser'), 
    mongoose = require('mongoose'), 
    cookieParse = require('cookie-parser'), 
    multer = require('multer'); 

app.set('port', process.env.PORT || 9000); 
app.set('view engine', 'jade'); 
// app.use(favicon(__dirname + '/public/images/favicon.ico')); 
app.use(cookieParse()); 
app.use(body.urlencoded({ 
    extended: true 
})); 
app.use(body.json()); 
app.use(multer()); 

//Session and flash are required by keystone 
app.use(flash()); 
app.use(session({ 
    secret: 'Keystone is the best!', 
    resave: false, 
    saveUninitialized: true 
})); 

keystone.app = app; 
keystone.mongoose = mongoose; 
keystone.init({ 
    'user model': 'User', 
    'mongo': 'mongodb://localhost/keystone', 
    'session': true, 
    'static': 'public' 
}); 

// Let keystone know where your models are defined. Here we have it at the `/models` 
keystone.import('models'); 

// Set keystone's to serve it's own public files. for instance, its logo's and stylesheets 
// keystone.static(app); 

// Set keystone routes for the admin panel, located at '/keystone' 
keystone.routes(app); 

// Initialize keystone's connection the database 
keystone.mongoose.connect(keystone.get('mongo')); 

// Create a handler for DB connection errors 
// keystone.mongoose.connect.on('error', handleDbErrorsFunc); 

// Serve your static assets 
app.use(serve('./public')); 

// This is where your normal routes and files are handled 
app.get('/', function(req, res, next) { 
    res.send('hello world'); 
}); 

// Start your express server 
app.listen(app.get('port')); 
0

Я тоже столкнулся с этой проблемой, следуя this guide. Я обнаружил, что, удалив строку keystone.app = app;, административная панель будет работать нормально. Так что, наконец, я работал на замену keystone.app = app; с keystone.set('routes', app);

Смежные вопросы