0

我有一个 CRA,并希望静态生成第一页以改善加载时间和 SEO。这个想法是运行一个 NodeJS 脚本,在 index.html 中呈现 App 文档。

这是我的代码:

const { renderToString } = require("react-dom/server");
const App = require('./App');
const content = `<html><body>${renderToString(App)}</body></html>`
const fs = require('fs');
fs.writeFileSync('../public/index.html', content);

但是,我在使用 NodeJS 运行它时遇到问题:

import React from 'react';
^^^^^^

SyntaxError: Cannot use import statement outside a module

显然,我必须构建源代码,但我不知道该怎么做。我正在使用 CRA 来构建我的 React 文件(实际上,我正在使用 react-app-rewired,所以如果我只知道如何去做,我就可以自定义构建过程)。

我应该怎么做才能让它工作?

4

2 回答 2

0

我最终使用了 puppeteer 并保存了生成的客户端代码。在此之前,我花了几个小时先拔掉,window然后window.location,然后window.localStorage,,,,它永远不会结束。使用 puppeteer,这很容易。window.documentwindow.document.createElement

于 2021-07-17T12:29:01.380 回答
0

错误来自节点:https ://stackoverflow.com/a/59399717/13216797

我知道这不是你的问题......但是使用 Nextjs 怎么样?

即使没有节点环境,您也可以使用该"next export"命令制作一个捆绑包,该捆绑包可以像静态文件一样工作,同时仍然可以做出反应......

于 2021-06-26T19:56:21.043 回答