aspnet prerenderingを使用してサーバサイドレンダリングを行う、aspnetコアで動作するreact-reduxアプリケーションがあります。Aspnetサーバレンダリングデバッグ
私は子供のコンポーネントで私は愚かなタイプミスのために未定義の小道具にアクセスしようとすると、プログラミングエラーを起こしていると言います。線xで未定義の何かをアクセスすることはできません:YY しかしserverrenderingで私が手:
An unhandled exception occurred while processing the request.
Exception: Call to Node module failed with error: Prerendering timed out after 30000ms because the boot function in 'ClientApp/src/boot-server' returned a promise that did not resolve or reject. Make sure that your boot function always resolves or rejects its promise. You can change the timeout value using the 'asp-prerender-timeout' tag helper.
これは、デバッグを行い、私はこのようなエラーを持っているだろうレンダリングサーバーなし
import {Child} from './child'
export class Parent extends React.Component {
render() {
const someProp = {
something: "something"
};
return <Child someProp={someProp} />;
}
}
export class Child extends React.Component {
render() {
return <div>this.props.someprop.something</div>;
//typo: should be someProp instead of someprop
}
あなたが何が間違っていたかについてのフィードバックを得ることができないときはかなり難しいです。 何かが失敗した場合に拒否をセットアップする方法を知っている人はいますか?またはサーバーサイドのレンダリングされたコードをデバッグすることも可能ですか?
ここは私のブートサーバーファイルです。ファイルがいくつか必要な場合は教えてください。
import * as React from 'react';
import { Provider } from 'react-redux';
import { renderToString } from 'react-dom/server';
import configureStore from './store/configureStore';
import {getFormById} from './actions/getFormActions';
import {updateUserLocale} from './actions/userLocaleActions';
import FormResponder from './components/mainComponents/formResponder';
export default function renderApp (params) {
return new Promise((resolve, reject) => {
const store = configureStore();
store.dispatch(getFormById(params.data.id, params.data.config, params.data.authenticationToken));
store.dispatch(updateUserLocale(params.data.userLocale));
const app = (
<Provider store={ store }>
<FormResponder />
</Provider>
);
// Perform an initial render that will cause any async tasks (e.g., data access) to begin
renderToString(app);
// Once the tasks are done, we can perform the final render
// We also send the redux store state, so the client can continue execution where the server left off
params.domainTasks.then(() => {
resolve({
html: renderToString(app),
globals: {
initialReduxState: store.getState(),
authenticationToken: params.data.authenticationToken,
config: params.data.config
}
});
}, reject); // Also propagate any errors back into the host application
});
}
あなたはちょうど私をクレイジーに救った! – racamp101