【发布时间】:2019-07-04 04:15:55
【问题描述】:
想法
首先你有一个像其他网站一样的主要 Nuxt 网站。然后将我的模块添加到您的项目中。然后,我的模块将一个子域“admin.example.com”添加到您的项目中,这是一个完全充实的基于 Nuxt 的网站,它完全独立,但从您的项目流程中运行,因此不必制作两个必须单独启动的网站项目想法是我可以制作一个网站项目,然后制作一个添加另一个网站的模块项目,将三个项目变成两个。
代码
模块.js
this.addServerMiddleware(vhost('admin.website.com', adminApp));
adminApp.js
const {Nuxt, Builder} = require('nuxt');
const config = require('../admin/nuxt.config');
config.dev = true;
const nuxt = new Nuxt(config);
if (nuxt.options.dev) {
new Builder(nuxt).build()
.catch(function(error) {
console.log(error);
})
}
module.exports = nuxt.render;
来自管理网站的部分 nuxt.config.js
// __dirname leads to my modules directory
// process.cwd() leads to the main websites folder
module.exports = {
mode: 'universal',
srcDir: __dirname,
rootDir: __dirname,
modulesDir: process.cwd(),
问题
每当我访问“admin.website.com”时,都会显示以下消息:
我已经尝试了大量的各种更改和调整,但似乎没有任何效果。据我所知,这可能与以下事实有关:A)网站建在某个地方,它没有找到生成的资源文件,或者 B)我没有向意大利面条怪物祈祷。
我已尝试将 adminApp 导出为使用 app.use(nuxt.render) 的 Express 应用程序,但这会导致相同的错误,因此我确定这不是问题所在。我已经尝试为api.website.com 使用 Express 应用程序,效果很好,所以我知道我喜欢这样 |--|接近使这一切工作。像这样添加子域确实有效,每个子域都可以是一个 Express 应用程序,但由于某种原因,Nuxt 在以这种方式使用时找不到任何资源。根据https://nuxtjs.org/api/nuxt-render/ nuxt.render(req, res) 如您所见,将req 和res 作为参数,这意味着我不需要通过Express 应用程序使用它,serverMiddleware 已经是一个Express 应用程序。
想法?
【问题讨论】:
-
现在我在管理站点上使用
nuxt generate,并通过简单地使用res.sendFile(path.join(__dirname + '/../admin/dist' + req.path + '/index.html'));使用常规的Express 应用程序提供它,如果有人想要解决方法的提示,只需将它放在那里,我仍然想解决这个问题,而无需构建网站并提供静态网站。 -
实际上使用
app.use(express.static(path.join(__dirname + '/../admin/dist')));作为解决方法更容易。不过还是不开心。
标签: javascript node.js express vue.js nuxt.js