Модуль Nuxt, который добавляет другой веб-сайт в качестве serverMiddleware - PullRequest
0 голосов
/ 10 февраля 2019

Идея

Сначала у вас есть основной веб-сайт Nuxt, как и любой другой.Затем вы добавляете мой модуль в ваш проект.Затем мой модуль добавляет субдомен «admin.example.com» к вашему проекту, который представляет собой полностью усовершенствованный веб-сайт на основе Nuxt, полностью собственный, но запущенный из процесса ваших проектов, поэтому вместо создания двух веб-проектов, которые должны запускаться отдельно,Идея состоит в том, что я могу сделать свой проект одного сайта, а затем один модуль, который добавляет другой сайт, превращая три проекта в два.

Код

module.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 как приложение Express, которое использует app.use(nuxt.render), но это приводит к той же ошибке, так что я уверен, что это не проблема.Я пытался использовать приложение Express для api.website.com, и это прекрасно работает, поэтому я знаю, что я похож на ЭТО | - |близок к тому, чтобы заставить все это работать.Подобное добавление поддоменов работает, и каждый поддомен может быть приложением Express, но по какой-то причине Nuxt не может найти какие-либо ресурсы при использовании таким способом.В соответствии с https://nuxtjs.org/api/nuxt-render/ nuxt.render(req, res), как вы можете видеть, принимает req и res в качестве аргументов, что должно означать, что мне не нужно использовать его через приложение Express, serverMiddleware уже является приложением Express.

Мысли?

1 Ответ

0 голосов
/ 16 февраля 2019

Я запускал эту ошибку раньше, когда обслуживал приложения через сервер.Я думаю, что вам нужно явно установить publicPath или buildDir в nuxt.config.js для обоих приложений, чтобы настройка работала.Ваша проблема может заключаться в том, что все ресурсы сборки генерируются в одной папке, в результате чего одно из приложений не может найти ресурсы сборки.Свойство buildDir установлено в nuxt.config.js, а свойство publicPath определено в свойстве сборки.

Дополнительная информация здесь:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...