Просмотр исходного кода

modify setup orders of server(to ensure that setting routes is at last)

Yuki Takei 9 лет назад
Родитель
Сommit
06b5a3ebc0
3 измененных файлов с 30 добавлено и 11 удалено
  1. 2 5
      app.js
  2. 9 2
      lib/crowi/dev.js
  3. 19 4
      lib/crowi/index.js

+ 2 - 5
app.js

@@ -7,8 +7,5 @@
 
 var crowi = new (require('./lib/crowi'))(__dirname, process.env);
 
-crowi.init()
-  .then(function() {
-    return crowi.start();
-  }).catch(crowi.exitOnError);
-
+crowi.start()
+  .catch(crowi.exitOnerror);

+ 9 - 2
lib/crowi/dev.js

@@ -22,7 +22,12 @@ class CrowiDev {
     this.app = app;
   }
 
-  setupLiveReloadTools() {
+  setupTools() {
+    this.setupWebpackHMR();
+    this.setupReloadServer();
+  }
+
+  setupWebpackHMR() {
     // Webpack HMR settings
     const webpackConfig = require('../../webpack.config');
     var compiler = webpack(webpackConfig);
@@ -30,7 +35,9 @@ class CrowiDev {
       noInfo: true, publicPath: webpackConfig.output.publicPath
     }));
     this.app.use(webpackHotMiddleware(compiler));
+  }
 
+  setupReloadServer() {
     // reload settings
     // see: https://github.com/glenjamin/webpack-hot-middleware
     // see: https://github.com/jprichardson/reload
@@ -41,7 +48,7 @@ class CrowiDev {
       reloadServer.reload();
     });
 
-    // debug(`watching for live-reloading -> ${this.crowi.libDir}`);
+    debug(`watching for live-reloading -> ${this.crowi.libDir}`);
   }
 }
 

+ 19 - 4
lib/crowi/index.js

@@ -290,7 +290,13 @@ Crowi.prototype.start = function() {
     , server
     , io;
 
-  return self.buildServer()
+  return Promise.resolve()
+    .then(function() {
+      return self.init()
+    })
+    .then(function() {
+      return self.buildServer();
+    })
     .then(function(app) {
       server = http.createServer(app).listen(self.port, function() {
         console.log(`[${self.node_env}] Express server listening on port ${self.port}`);
@@ -300,7 +306,7 @@ Crowi.prototype.start = function() {
       if (self.node_env === 'development') {
         const CrowiDev = require('./dev');
         const crowiDev = new CrowiDev(self, server, app);
-        crowiDev.setupLiveReloadTools();
+        crowiDev.setupTools();
       }
 
       io = require('socket.io')(server);
@@ -308,6 +314,9 @@ Crowi.prototype.start = function() {
       });
       self.io = io;
 
+      // setup Express Routes
+      self.setupRoutesAtLast(app);
+
       return app;
     });
 };
@@ -328,8 +337,6 @@ Crowi.prototype.buildServer = function() {
     require('../plugins')(this, app);
   }
 
-  require('../routes')(this, app);
-
   if (env == 'development') {
     //swig.setDefaults({ cache: false });
     app.use(errorHandler({ dumpExceptions: true, showStack: true }));
@@ -348,6 +355,14 @@ Crowi.prototype.buildServer = function() {
   return Promise.resolve(app);
 };
 
+/**
+ * setup Express Routes
+ * !! this must be at last because it includes '/*' route !!
+ */
+Crowi.prototype.setupRoutesAtLast = function(app) {
+  require('../routes')(this, app);
+}
+
 /**
  * require API for plugins
  *