javascript - 添加另一个网站作为 serverMiddleware 的 Nuxt 模块

标签 javascript node.js express vue.js nuxt.js

想法

首先,您有一个与其他网站一样的主要 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”时,都会出现以下消息:

enter image description here

我已经尝试了大量的更改和调整,但似乎没有任何效果。据我所知,这可能与以下事实有关:A) 网站建在某个地方但找不到生成的资源文件,或者 B) 我没有向意大利面条怪物祈祷足够多。

我尝试将 adminApp 导出为使用 app.use(nuxt.render) 的 Express 应用程序,但这会导致相同的错误,所以我确定这是不是问题。我试过为 api.website.com 使用 Express 应用程序,效果很好,所以我知道我喜欢这个 |--|接近使这一切工作。像这样添加子域确实有效,每个子域都可以是一个 Express 应用程序,但由于某些原因,Nuxt 在以这种方式使用时找不到任何资源。根据https://nuxtjs.org/api/nuxt-render/ nuxt.render(req, res) 如您所见,将 reqres 作为参数,这意味着我不需要使用通过 Express 应用程序,serverMiddleware 已经是一个 Express 应用程序。

想法?

最佳答案

我之前在通过无服务器提供应用程序时遇到过这个错误。我认为您需要在 nuxt.config.js 中为这两个应用程序显式设置 publicPath 或 buildDir 才能进行设置。您的问题可能是所有构建 Assets 都在同一文件夹中生成,导致其中一个应用程序找不到构建 Assets 。 buildDir 属性在 nuxt.config.js 上设置,publicPath 设置在 build 属性上定义。

更多信息在这里:

https://nuxtjs.org/api/configuration-builddir

https://nuxtjs.org/api/configuration-build#publicpath

关于javascript - 添加另一个网站作为 serverMiddleware 的 Nuxt 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54617519/

相关文章:

node.js - NodeJS使用相对路径访问文件

node.js - 如何在采取进一步行动之前等待 Sequelize 结果?

node.js - Mongoose 过期数据但保留在数据库中

node.js - OpenAI API 给出错误 : 429 Too Many Requests

javascript - 单击按钮时清除表单

javascript - 设置媒体后无法在 jPlayer 中更改歌曲

javascript - 另一个输入中返回的两个输入字段的差异

javascript - 何时使用 WinJS.Navigation.state 与选项

javascript - 从浏览器使用 node.js 的文件系统函数

node.js - Sequelize 不存储额外的连接表字段