首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入React组件时的NodeJS MODULE_NOT_FOUND

导入React组件时的NodeJS MODULE_NOT_FOUND
EN

Stack Overflow用户
提问于 2022-02-28 15:01:22
回答 1查看 514关注 0票数 0

我正在学习关于如何设置服务器端呈现的React的教程(这是不可公开的)。本教程使用的是React,Babel和Webpack。我想和它一起使用类型记录,所以我根据官方文档安装了所需的依赖项。

我的目标是使用renderToString函数在index.js文件中呈现导入的组件。为了更方便,我将相关文件放在这里,但我将链接我的github存储库,以便您可以更好地查看结构和依赖关系。

在我尝试将组件导入到index.js文件(github处于OK状态)之前,一切都很好。将组件导入index.js会创建一个错误(请参见下面)。

我尝试将index.js文件更改为index.tsxindex.jsx,删除并重新安装node_modules,但是没有任何帮助,我也不知道应该在哪里寻找可能的解决方案。我目前的项目结构如下:

编辑:我已经找到了问题的根源- nodejs抛出了错误。我仍然不知道如何解决这个问题。

client.tsx:

代码语言:javascript
复制
import ReactDOM from 'react-dom';
import { App } from './App';

ReactDOM.render(
  <App />,                                
  document.querySelector("#container")  
);

App.tsx:

代码语言:javascript
复制
// this function component worked fine inside of the client.tsx
export function App() {
  return (
    <div>
      <h1>Cats are love !</h1>
    </div>
  );
}

错误来自index.tsx

代码语言:javascript
复制
import express from 'express'
import { readFileSync } from 'fs';
import { renderToString } from 'react-dom/server';

import { App } from '../src/App';

const app = express();

app.use(express.static("dist"));

app.get("/", async (_request, response) => {
  
  const index = readFileSync(`public/index.html`, `utf8`);
  const rendered = renderToString(<App />);

  response.send(index.replace("{{rendered}}", rendered));

});

const port = 3000;
app.listen(port);

console.log(`Server listening on port ${port}`);

错误输出如下:

代码语言:javascript
复制
catlord@Cat-Heaven:~/react-workspace/server-side-rendering$ npm run build

> server-side-rendering@1.0.0 build
> webpack

asset bundle.js 1.03 MiB [emitted] [big] (name: client)
runtime modules 670 bytes 3 modules
modules by path ./node_modules/ 1010 KiB
  modules by path ./node_modules/react/ 108 KiB
    modules by path ./node_modules/react/*.js 404 bytes 2 modules
    modules by path ./node_modules/react/cjs/*.js 108 KiB 2 modules
  modules by path ./node_modules/scheduler/ 26.3 KiB
    modules by path ./node_modules/scheduler/*.js 412 bytes 2 modules
    modules by path ./node_modules/scheduler/cjs/*.js 25.9 KiB 2 modules
  modules by path ./node_modules/react-dom/ 875 KiB
    ./node_modules/react-dom/index.js 1.33 KiB [built] [code generated]
    ./node_modules/react-dom/cjs/react-dom.development.js 874 KiB [built] [code generated]
  ./node_modules/object-assign/index.js 2.06 KiB [built] [code generated]
modules by path ./src/*.tsx 495 bytes
  ./src/client.tsx 298 bytes [built] [code generated]
  ./src/App.tsx 197 bytes [built] [code generated]
webpack 5.69.1 compiled successfully in 919 ms

catlord@Cat-Heaven:~/react-workspace/server-side-rendering$ npm start

> server-side-rendering@1.0.0 start
> babel-node server/index.js

node:internal/modules/cjs/loader:936
  throw err;
  ^

Error: Cannot find module '../src/App'
Require stack:
- /home/catlord/react-workspace/server-side-rendering/server/index.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/home/catlord/react-workspace/server-side-rendering/server/index.js:8:1)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Module._compile (/home/catlord/react-workspace/server-side-rendering/node_modules/pirates/lib/index.js:136:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Object.newLoader [as .js] (/home/catlord/react-workspace/server-side-rendering/node_modules/pirates/lib/index.js:141:7)
    at Module.load (node:internal/modules/cjs/loader:981:32) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/home/catlord/react-workspace/server-side-rendering/server/index.js'
  ]
}
EN

回答 1

Stack Overflow用户

发布于 2022-03-01 10:52:53

可以使用@创建相对于项目根的路径。

代码语言:javascript
复制
import { App } from '@/src/App';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71296924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档