Fix crash when application doesn't have an api & remove last hook studio traces

This commit is contained in:
Aurélien Georget 2016-03-15 15:39:02 +01:00
parent 55d5f4d84e
commit 911d2ac985
4 changed files with 18 additions and 20 deletions

View File

@ -144,19 +144,19 @@ module.exports = function (strapi) {
}
// Merge API controllers with the main ones.
strapi.controllers = _.merge({}, strapi.controllers, strapi.api[api.name].controllers);
strapi.controllers = _.merge({}, strapi.controllers, _.get(strapi.api, api.name + '.controllers'));
// Merge API services with the main ones.
strapi.services = _.merge({}, strapi.services, strapi.api[api.name].services);
strapi.services = _.merge({}, strapi.services, _.get(strapi.api, api.name + '.services'));
// Merge API models with the main ones.
strapi.models = _.merge({}, strapi.models, strapi.api[api.name].models);
strapi.models = _.merge({}, strapi.models, _.get(strapi.api, api.name + '.models'));
// Merge API policies with the main ones.
strapi.policies = _.merge({}, strapi.policies, strapi.api[api.name].policies);
strapi.policies = _.merge({}, strapi.policies, _.get(strapi.api, api.name + '.policies'));
// Merge API routes with the main ones.
strapi.config.routes = _.merge({}, strapi.config.routes, strapi.api[api.name].config.routes);
strapi.config.routes = _.merge({}, strapi.config.routes, _.get(strapi.api, api.name + '.config.routes'));
});
});

View File

@ -52,7 +52,15 @@ module.exports = function (strapi) {
_.extend(strapi.hooks, _.reduce(hooks.externalHooks, function (memo, module, identity) {
if (module['package.json'] && module['package.json'].strapi && module['package.json'].strapi.isHook) {
const hookName = identity.match(/^strapi-/) ? identity.replace(/^strapi-/, '') : identity;
memo[hookName] = require(path.resolve(strapi.config.appPath, 'node_modules', identity));
try {
memo[hookName] = require(identity);
} catch (err) {
try {
memo[hookName] = require(path.resolve(strapi.config.appPath, 'node_modules', identity));
} catch (err) {
cb(err);
}
}
}
return memo;
}, {}));

View File

@ -42,7 +42,6 @@ module.exports = function (strapi) {
*/
initialize: function (cb) {
// Middleware used for every routes.
// Expose the endpoint in `this`.
function globalPolicy(endpoint, value, route) {

View File

@ -120,19 +120,9 @@ module.exports = function (strapi) {
loadHook('_hooks', cb);
},
// Load the studio hook.
studio: function loadStudioHook(cb) {
if (!hooks.studio) {
return cb();
}
prepareHook('studio');
applyDefaults(hooks.studio);
loadHook('studio', cb);
},
// Prepare all other hooks.
prepare: function prepareHooks(cb) {
async.each(_.without(_.keys(hooks), '_config', '_api', '_hooks', 'studio', 'router'), function (id, cb) {
async.each(_.without(_.keys(hooks), '_config', '_api', '_hooks', 'router'), function (id, cb) {
prepareHook(id);
process.nextTick(cb);
}, cb);
@ -140,7 +130,7 @@ module.exports = function (strapi) {
// Apply the default config for all other hooks.
defaults: function defaultConfigHooks(cb) {
async.each(_.without(_.keys(hooks), '_config', '_api', '_hooks', 'studio', 'router'), function (id, cb) {
async.each(_.without(_.keys(hooks), '_config', '_api', '_hooks', 'router'), function (id, cb) {
const hook = hooks[id];
applyDefaults(hook);
process.nextTick(cb);
@ -149,7 +139,7 @@ module.exports = function (strapi) {
// Load all other hooks.
load: function loadOtherHooks(cb) {
async.each(_.without(_.keys(hooks), '_config', '_api', '_hooks', 'studio', 'router'), function (id, cb) {
async.each(_.without(_.keys(hooks), '_config', '_api', '_hooks', 'router'), function (id, cb) {
loadHook(id, cb);
}, cb);
},
@ -159,6 +149,7 @@ module.exports = function (strapi) {
if (!hooks.router) {
return cb();
}
prepareHook('router');
applyDefaults(hooks.router);
loadHook('router', cb);