Express 3.0とexpress-subdomainを使用して既存のノードアプリケーションにサブドメインを追加しようとしています。エクスプレスサブドメインと別のルートファイルを参照する際に問題があります
(私は私のhostsファイルにサブドメインを追加しましたし、それが正常に動作しています。)
現在のアプリはメインファイルと同じディレクトリにある別のroutes.jsファイル内のすべてのルートを持っており、それはですこのように呼ばれる:
var routes = require("./routes")
//other stuff
routes.routeList(app);
私は
app.use(subdomain('test-developer', [router]));
構文を使用するさまざまな方法の束を試みたと私はそれを把握することはできません。
私は
var router = require("./routes.js");
app.use(subdomain('test-developer', router));
を試みたし、私のようなエラーが出る "2番目のパラメータは、FN(reqは、RES、次)のparamsを扱う関数でなければなりません。"
は、ここでは、コードのいくつかのより多くのです:
//the developerRoutes.js file
var express = require('express');
exports.developerRouteList = function(app) {
var devRouter = express.Router();
devRouter.get('/', function(req, res) {
res.send('hi!');
});
}
とmain.jsファイルから:
var developerRoutes = require('./developerRoutes');
//...
var app = express();
app.use(subdomain('test-developer', developerRoutes.developerRouteList));
//force https with this:
app.enable('trust proxy');
app.configure(function() {
app.use(function (req, res, next){
var hostname = (req.headers.host.match(/:/g)) ? req.headers.host.slice(0, req.headers.host.indexOf(":")) : req.headers.host
console.log(hostname)
if ((hostname === 'localhost') || (hostname === 'test-developer.localhost') || req.secure) {
// request was via https, so do no special handling
next();
} else {
// request was via http, so redirect to https
res.redirect('https://' + req.headers.host + req.url);
}
});
app.use(express.bodyParser());
app.use(express.cookieParser('secret'));
app.use(function(req, res, next){
session = require("./routes/includes/session.js");
next();
});
app.use(express.static('./public'));
app.use(app.router);
});
app.engine('ejs', engine);
app.set('views',__dirname + '/views');
app.set('view engine', 'ejs');
multiLess.configure(__dirname + '/static/less/', parentDirectory + 'public/css/',['main.less'],0);
routes.routeList(app);
これを整理する方法上の任意のアイデア?
routes.jsファイルから何かを投稿できますか?それは輸出または返品と同様ですか? –
確かに - それは "exports.routeList"をエクスポートし、ルートによって参照される別々のjsファイルを必要とします。 ( "app.get( '/'、datafree.home);"これは "datafree.js"を必要とします) – esperluette
'exports.routeList'は' express.Router'のインスタンスですか?エクスプレスサブドメイン文書に基づいていますサブドメイン( 'test-developer '、のインスタンス)' –