Max*_*pov 8 reactjs webpack server-side-rendering webpack-4 react-pdf
我用来react-pdf通过 CRA 在 React 中渲染 PDF,然后像这样导入它:
import { Document, Page } from "react-pdf/dist/esm/entry.webpack";
Run Code Online (Sandbox Code Playgroud)
现在,我尝试使用以下 webpack 配置来实现 SSR:
// webpack.server.conf
const path = require("path");
const webpackNodeExternals = require("webpack-node-externals");
module.exports = {
target: "node",
entry: "./server/index.tsx",
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "build-server"),
},
resolve: {
extensions: [".ts", ".tsx", ".js"],
modules: [path.resolve(__dirname, "src"), "node_modules"],
},
externals: [webpackNodeExternals()], // excludes node modules in Webpack
module: {
rules: [
{
test: /\.tsx?$/,
loader: "ts-loader",
options: {
configFile: "tsconfig.server.json",
},
},
// we use url-loader as loader for webpack which transforms files into base64 URIs
{
test: /\.(gif|jpe?g|png|ico)$/,
use: [
{
loader: "url-loader",
options: {
limit: 10000,
},
},
],
},
{
test: /\.(otf|eot|ttf|woff|woff2).*$/,
use: [
{
loader: "url-loader",
options: {
limit: 10000,
},
},
],
},
{
test: /\.s[ac]ss$/i,
use: ["file-loader"],
},
{
test: /\.svg$/,
use: ["@svgr/webpack"],
},
],
},
optimization: {
nodeEnv: "development", // NODE_ENV
},
};
Run Code Online (Sandbox Code Playgroud)
为了构建我的 SSR,我运行:
webpack --config webpack.server.js --mode=development
Run Code Online (Sandbox Code Playgroud)
我这样启动服务器:
nodemon ./build-server/bundle.js
Run Code Online (Sandbox Code Playgroud)
现在,除了上面的导入字符串之外,一切正常,我收到以下错误:
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:915:16)
at Module._compile (internal/modules/cjs/loader.js:963:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at eval (webpack:///external_%22react-pdf/dist/esm/entry.webpack%22?:1:18)
at Object.react-pdf/dist/esm/entry.webpack (/Users/max/Code/Lawplus/docket/build-server/bundle.js:2314:1)
at __webpack_require__ (/Users/max/Code/Lawplus/docket/build-server/bundle.js:20:30)
Run Code Online (Sandbox Code Playgroud)
不确定这是否有帮助,但我在介绍时遇到了完全相同的错误jest,当时我通过添加修复了它:
"jest": {
"moduleNameMapper": {
"^react-pdf": "react-pdf/dist/umd/entry.jest"
}
},
Run Code Online (Sandbox Code Playgroud)
给我的package.json。我想我需要修改我的webpack.server.js才能使其工作,但是如何呢?
| 归档时间: |
|
| 查看次数: |
1632 次 |
| 最近记录: |