1

これは githubで見たことがあり、スタートガイドのこのセクションも見ました。しかし、管理者を表示させることができません ( localhost:3000/keystone404 を返します)

管理者にアクセスしてデータを編集できるようにしたいだけです。だから私は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);

Node 0.12+ と Express 4 を使用しています。

ご協力ありがとうございました

4

2 に答える 2

2

その github ガイド (または古いバージョンの keystone 用に書かれている) にはいくつかのエラーがあるようです。つまり、次の 2 行で問題が発生します。

keystone.static(app);

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

それらをコメントアウトし、データベースをローカルホストのmongoDBに向けました。models/User.jsまた、yo 生成された keystone プロジェクトからも対応しました。それで、私は管理者コントロールを機能させました(ただし、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'));
于 2015-05-06T01:34:26.543 に答える