【发布时间】: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'。错误消息甚至会告诉您这一点。