#ruby-on-rails #react-rails #execjs
Вопрос:
Я гит на эту ошибку реагирую::Сдача серверов::Ошибка предварительного просмотра в поиске#показать из этого скрипта
lt;%= react_component('TagList', { tags: @tags }, { prerender: true }) %gt;
Ошибки, как показано ниже
Encountered error "#lt;ExecJS::ProgramError: TypeError: Cannot read property 'serverRender' of undefinedgt;" when prerendering TagList with {"tags":[{"id":40,"name":"food","created_at":"2021-09-04T20:55:32.358 07:00","updated_at":"2021-09-04T20:55:32.358 07:00","featured":false,"slug":"food","lowercase_name":"food"},{"id":46,"name":"good","created_at":"2021-10-14T22:12:19.645 07:00","updated_at":"2021-10-14T22:12:19.645 07:00","featured":false,"slug":"good","lowercase_name":"good"}]} eval (eval at lt;anonymousgt; ((execjs):37:8), lt;anonymousgt;:6:45) eval (eval at lt;anonymousgt; ((execjs):37:8), lt;anonymousgt;:18:13) (execjs):37:8 (execjs):55:14 (execjs):1:40 Object.lt;anonymousgt; ((execjs):1:58) Module._compile (internal/modules/cjs/loader.js:1085:14) Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10) Module.load (internal/modules/cjs/loader.js:950:32) Function.Module._load (internal/modules/cjs/loader.js:790:12)
Это app/javascript/components/TagList.js
import React from 'react'; import ReactDOM from "react-dom"; import PropTypes from 'prop-types'; export default class TagList extends React.Component { render () { return ( lt;div className={`tags-wrapper ${this.props.className}`} gt; {this.renderTags()} lt;/divgt; ); } renderTags() { return this.props.tags.map(tag =gt; { return ( lt;a key={tag.id} className="tag" href={`/tags/${tag.slug}`}gt; {tag.name} lt;/agt; ); }); } }
Это app/javascript/server_rendering.js
const componentRequireContext = require.context("components", true); const ReactRailsUJS = require("react_ujs"); window.componentRequireContext = componentRequireContext ReactRailsUJS.useContext(componentRequireContext);
Ресурсы представлены ниже
execjs 2.8.1
react-рельсы 2.6.1
рубин 3.0.2
рельсы 7.0.0.alpha2
Кто-нибудь может посоветовать, как это исправить?
Ответ №1:
Теперь я могу исправить проблему, обновив
lt;%= react_компонент («Список тегов», {теги: @теги}, {предварительный просмотр: истина }) %gt; gt;
до
lt;%= react_компонент(«Список тегов», { теги: @теги }, { предварительный просмотр: ложь }) %gt;