【发布时间】:2019-09-22 12:12:42
【问题描述】:
我正在为我的全栈 web 应用程序实现一个 websocket 聊天服务器,并意识到那里的大多数资源只提供 html+js 的教程,我不确定如何从 JS 迁移到 JSX .
我开始尝试将 js 代码集成到我的 jsx 聊天组件文件中,但遇到了 express() is undefined 的问题
这是我建立快递服务器的JS:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
uses = [];
connections = [];
server.listen(process.env.port || 3000);
console.log('server running...');
这是我在 JSX 中的尝试:
import React, { Component } from "react";
class ChatComponent extends Component {
state = {
express: require('express'),
app: express(),
server: require('http').createServer(this.app),
io: require('socket.io').listen(this.server),
users: [],
connections: [],
}
render() {
return (
<React.Fragment>
...
当我尝试 npm start 时,我收到了这条消息,但不知道如何修复它:
./src/components/chat/ChatComponent.jsx
Line 7: 'express' is not defined no-undef
我还在我的 package.json 中包含了 express 和 socket.io 依赖项,并且 npm 也对其进行了更新
{
"name": "javlet-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"axios": "^0.19.0",
"bootstrap": "^4.3.1",
"express": "*",
"jquery": "^3.4.1",
"js-cookie": "^2.2.1",
"popper.js": "^1.15.0",
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-google-login": "^5.0.5",
"react-new-window": "^0.1.2",
"react-scripts": "3.0.1",
"react-webcam": "^3.0.1",
"socket.io": "*",
"typescript": "^3.6.3",
"uws": "^10.148.1",
"yarn": "^1.17.3"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"eject": "react-scripts eject",
"test": "jest --coverage"
},
...
任何建议将不胜感激。 如果需要,可以提供更多代码。谢谢
【问题讨论】:
-
express 是服务器端 NodeJS 库,你不应该在 React 中使用它
-
我相信 JSX 是 React.createElement 的简写,它最终创建了 DOM 元素。你不能把所有的 JS 都迁移到 JSX
标签: javascript node.js reactjs jsx