使用 koa-static 在 Koajs 上托管 Emberjs 应用程序



我正在使用koa-static在koajs上托管一个emberjs应用程序。根据以下代码:

var app = koa();
var App1 = koa();
App1.use(stati(__dirname + "/App1"));
app.use(mount('/AppViewer',App1));
app.listen(3000); 

调用localhost:3000/AppViewer时,我看不到我的页面并收到错误消息说找不到.js和.css文件,但是调用localhost:3000/AppViewer/index.html时一切正常。 所以我的问题是如何在调用localhost:3000/AppViewer时查看我的页面。

这对我来说已经足够了,使用 ember-cli 并部署到 heroku:

var common = require('koa-common'),
    koa = require('koa'),
    app = koa();
var env = process.env.NODE_ENV || 'development',
    port = process.env.PORT || '3800';
app.use(common.logger());
app.use(common.responseTime());
app.use(common.static(__dirname + "/dist"));
app.listen(port);
console.log('listening on port ' + port);

其中/dist 是 ember 构建的构建输出(相当于带有 EAK 的 grunt dist)

首先,这看起来很奇怪,因为koa-static应该默认在根目录上提供index.html。确保App1没有将/路由到其他地方。

然后,您仍然可以使用 koa-rewrite 摆脱 URL 中的index.html。像这样:

var rewrite = require('koa-rewrite');
App1.use(rewrite('/*', '/index.html'));

更新

使用以下代码进行测试:

var koa = require('koa');
var app = koa();
var app1 = koa();
var mount = require('koa-mount');
var serve = require('koa-static');
var rewrite = require('koa-rewrite');
var route = require('koa-route');
app1.use(serve(__dirname + "/app1"));
app1.use(rewrite('/*', '/index.html'));
app.use(mount('/av', app1));
app.use(route.get('/', function *(next) {
  this.body = 'I'm the main app!';
}));
app.listen(3000);

koa-static 对我不起作用。相反,我尝试了koa静态服务器和耶!

我的中间件:

var Proxy = require("koa-proxy");
// const Rewrite = require("koa-rewrite");
const StaticServer = require("koa-static-server");
export const InstallWebApp = (app) => {
  if (process.env.NODE_ENV === "production") {
    // Install static web app
    // app.use(Rewrite('/*', '/'));
    app.use(StaticServer({rootDir: `${__dirname}/../../../../client-web/build`, notFoundFile: "index.html"}));
  } else {
    // Install dev server
    app.use(
      Proxy({
        host: `http://localhost:${process.env.WEB_DEV_PORT}`,
      })
    );
  }
};

最新更新