我有一个CRA,希望静态生成第一个页面,以提高加载时间和SEO。这个想法是运行一个NodeJS脚本,在index.html.中呈现应用程序文档
这是我的代码:
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应用程序,所以如果我知道如何做到这一点,我可以自定义构建过程(。
我该怎么做才能让它发挥作用?
错误来自节点:https://stackoverflow.com/a/59399717/13216797
我知道这不是你的问题。。。但是使用Nextjs呢?
即使没有节点环境,您也可以使用"next export"
命令制作一个捆绑包,该捆绑包将像静态文件一样工作,同时仍在进行反应。。。
我最终使用了puppeteer,只保存了生成的客户端代码。在那之前,我花了几个小时,先是清理了window
,然后是window.location
,再是window.localStorage
,window.document
,window.document.createElement
,它从未结束。有了木偶师,这很容易。