【问题标题】:Translating server code to ES6 using socket.io使用 socket.io 将服务器代码转换为 ES6
【发布时间】:2021-06-02 11:46:26
【问题描述】:

我们是 socket.io 和 express 的新手。我们也跟着这个教程学习了socket.io https://www.valentinog.com/blog/socket-react/

现在我们要翻译这行代码(旧式):

const index = require("./routes/index").default

到 ES6,如下:

从'./routes/index'导入路由器

app.use('/', 路由器)

但这对我们不起作用。我们在终端中收到此错误。

完整的 server.js 代码在这里

import express from 'express'
const app = express()
import { createServer } from 'http'
const server = createServer(app)
import { Server } from "socket.io"
const io = new Server(server)
import cors from 'cors'

import router from './routes/index' 

const port = process.env.PORT || 4001

app.use('/', router)

app.use(index)

app.use(cors())
app.use(express.json())

let interval

io.on("connection", (socket) => {
  console.log("New client connected")
  if (interval) {
    clearInterval(interval)
  } 
  interval = setInterval(() => getApiAndEmit(socket), 1000)
  socket.on("disconnect", () => {
    console.log("Client disconnected")
    clearInterval(interval)
  })
})

const getApiAndEmit = socket => {
  const response = new Date()

  socket.emit("FromAPI", response)
}

app.listen(port, () => {
  // eslint-disable-next-line
  console.log(`Server running on http://localhost:${port}`)
})

【问题讨论】:

  • 您可能需要修改导出路线的方式。在您的routes/index 文件中,尝试将module.exports = router; 替换为export default router;
  • 谢谢,但我们已经这样做了。
  • 在这种情况下,请仔细检查路径,并在import文件时尝试添加文件的扩展名。
  • 这是扩展名(或缺少扩展名)。您需要使用 ESM 提供完整的文件扩展名。 import router from './routes/index.js'。错误消息甚至会告诉您这一点。

标签: node.js express socket.io


【解决方案1】:

我可以像这样在我的项目中使用 socket.io:

const app = express()
const http = require('http').createServer(app)
const socketIo = require('socket.io')(http)

换句话说,我使用了 require 而没有使用路由器。这可能对您有用,除非您有特殊原因需要这样做。

【讨论】:

  • 您是否只使用了 require 而从未在代码中使用过 import?
  • @Caroline 不,我通常使用 import 但似乎我专门为这些包使用了 require 方法。
  • 我们的问题似乎是我们不能在同一个 server.js 文件中混合使用 import 和 require - 这使得服务器根本无法运行。因此,我们尽最大努力将与 socket.io 相关的代码翻译成 ES6,但我们还没有完全做到。
  • @William require 不是 ES6 导入。它是 CJS,不能在 ESM 环境中工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多