Meteor-React-ssr - запрашивает пакет шаблонов, когда у меня установлен static-html

Я пытаюсь реализовать рендеринг на стороне сервера с метеорной реакцией. Я удалил пакет templating и добавил пакет static-html, как в случае использования react для пользовательского интерфейса в Meteor.

Проблема в том, что когда я запускаю приложение с любой реализацией рендеринга на стороне сервера, оно работает нормально. Это означает, что если я просматриваю исходный код страницы, я вижу свою простую разметку с моим целевым div рендеринга. но когда я реализую код рендеринга сервера, он дает эту ошибку

`` ''

Error: Cannot find package "templating". Try "meteor add templating".
at makeInstallerOptions.fallback (packages/modules-runtime.js:597:13)
at Module.require (packages/modules-runtime.js:230:14)
at require (packages/modules-runtime.js:244:21)
at AccountsUIWrapper.js (imports/ui/AccountsUIWrapper.js:1:250)
at fileEvaluate (packages/modules-runtime.js:322:7)
at Module.require (packages/modules-runtime.js:224:14)
at require (packages/modules-runtime.js:244:21)
at App.js (imports/ui/App.js:1:386)
at fileEvaluate (packages/modules-runtime.js:322:7)
at Module.require (packages/modules-runtime.js:224:14)
at require (packages/modules-runtime.js:244:21)
at routes.js (imports/startup/routes.js:1:87)
at fileEvaluate (packages/modules-runtime.js:322:7)
at Module.require (packages/modules-runtime.js:224:14)
at require (packages/modules-runtime.js:244:21)
at main.js (server/main.js:1:558)
at fileEvaluate (packages/modules-runtime.js:322:7)
at Module.require (packages/modules-runtime.js:224:14)
at require (packages/modules-runtime.js:244:21)
at /Users/kenshinman/Desktop/projects/simple-todos/.meteor/local/build/programs/server/app/app.js:463:15
at /Users/kenshinman/Desktop/projects/simple-todos/.meteor/local/build/programs/server/boot.js:411:36
at Array.forEach (<anonymous>)

=> Выход с кодом: 1 => Ваше приложение вылетает. Жду смены файла.

`` ''

Вот мой server/main.js code

import { Tasks } from "../imports/api/tasks";
import React from "react";
import { Meteor } from "meteor/meteor";
import { onPageLoad } from "meteor/server-render";
import { StaticRouter, Switch } from "react-router-dom";
import { renderToString } from "react-dom/server";
import Routes from "../imports/startup/routes";

const siteName = "Todos";
const defaultImage = "https://loremflickr.com/320/240/baby";
const defaultMetaTags = `
<title>${siteName}</title>
<meta property = "og:title"       content = "${siteName}" />
<meta property = "og:description" content = "All your todos synced wherever you happen to be" />
<meta property = "og:image"       content = "${defaultImage}" />
`;

function createMetaTag(property, content) {
  return `<meta property = "${property}" content = "${content}">`;
}

onPageLoad(sink => {
  const { pathname } = sink.request.url;
  const meteorHost = Meteor.absoluteUrl();

  const App = props => {
    console.info(props);
    return (
      <StaticRouter location = {props.location} context = {{}}>
        <Switch>
          <Routes />
        </Switch>
      </StaticRouter>
    );
  };

  const content = renderToString(<App location = {sink.request.url} />);

  sink.renderIntoElementById("render-target", content);

  const taskId = "asdlkjhfsda";
  const task = taskId ? Tasks.findOne({ _id: "listId" }) : null;
  // task count

  if (task) {
    const title = "task.text";
    const description = `This list contains 8 incomplete tasks`;
    const fullUrl = meteorHost + pathname.replace(/^/+/g, "");
    sink.appendToHead(createMetaTag("og:title", title));
    sink.appendToHead(createMetaTag("og:description", description));
    sink.appendToHead(createMetaTag("og:url", fullUrl));
    sink.appendToHead(createMetaTag("og:image", defaultImage));
    sink.appendToHead(createMetaTag("og:site_name", siteName));
  } else {
    sink.appendToHead(defaultMetaTags);
    sink.appendToHead(createMetaTag("og:url", meteorHost));
  }
});

Но когда я комментирую строку import Routes from "../imports/startup/routes"; и, судя по всему, трасса, снова все работает нормально.

Вот код файла маршрута

import React from "react";
import App from "../ui/App";

import { Switch, Route } from "react-router-dom";

const Routes = () => (
 <div>
   <Route exact path = "/" component = {App} />
  <Route exact path = "/test" render = {() => <h2>This is the test page</h2>} />
 </div>
);

export default Routes;

Как я могу заставить это работать и перестать получать эту ошибку?

Спасибо.

уверены, что вы не оставили тег <template> где-нибудь на одном из маршрутов, вызываемых маршрутизатором? или импорт метеора / шаблонов куда-нибудь? кажется, что ваше приложение где-то пытается его импортировать.

Ivo 14.09.2018 11:34

@Ivo нет, я не

Kenshinman 14.09.2018 11:53

попробуйте создать приложение с помощью meteor create --bare, скопируйте в него свой код и посмотрите, работает ли оно. Это голое творение нигде не содержит шаблонов.

Ivo 14.09.2018 12:30

@Ivo Спасибо, я нашел. Забыл, что импортировал Template из meteor/templating в шаблон конфигурации пользовательского интерфейса моей учетной записи. Теперь работает

Kenshinman 14.09.2018 13:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
132
1

Ответы 1

Решено. Забыл, что импортировал Template из meteor/templating в шаблон конфигурации пользовательского интерфейса моей учетной записи. Теперь работает.

Рад, что ты его нашел.

Ivo 14.09.2018 14:06

Другие вопросы по теме