[英]Uncaught ReferenceError: require is not defined in nodeJs
我知道这个错误消息已经有很多问题,但我已经尝试了所有建议的解决方案,但它对我不起作用。
我想使用 websockets 创建一个服务器来构建一个在线多人游戏(所以在浏览器中)。 我知道 socket.io 可以用于浏览器我有这个我想学习的教程: https ://github.com/HungryTurtleCode/multiplayerSnake 他正在使用 socket.io 进行他的游戏,但无论我做什么我都会得到这个错误: Uncaught ReferenceError: require is not defined
。 我主要尝试了此链接中的解决方案: Node.js 上的客户端:未捕获的 ReferenceError:未定义要求但没有任何成功。 我想试试 Peter Mortensen 使用的解决方案,但我不知道应该怎么做。
自从我遇到此错误以来已经一周了,但我仍然没有找到适合我的解决方案。 我想尝试导入,但我遵循的示例使用导入如下:
import { createServer } from "http";
import { Server } from "socket.io";
但我得到错误: "http". Relative references must start with either "/", "./", or "../"
"http". Relative references must start with either "/", "./", or "../"
我可以使用此链接解决socket.io:https://cdnjs.cloudflare.com/ajax/libs/socket.io /4.5.1/socket.io.js而不是“socket.io”,但我没有为 http 找到它。 我尝试了另一个链接( https://cdnjs.cloudflare.com/ajax/libs/http-client/4.3.1/http-client.min.js )但它给了我另一个错误所以我猜它不是解决它的好方法。
我也尝试过 requirejs 但要使用它也使用 require 所以它不能正常工作(参见此链接: https ://gist.github.com/guerrerocarlos/3651490)
我不知道我还能做什么。
这是我的试验的最后一个版本。
在我的 index.php 中:
<script data-main="scripts/main" src="scripts/require.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.5.1/socket.io.js" integrity="sha512-9mpsATI0KClwt+xVZfbcf2lJ8IFBAwsubJ6mI3rtULwyM3fBmQFzj0It4tGqxLOGQwGfJdk/G+fANnxfq9/cew==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="js/serverGame.js"></script>
这是我的 serverGame.js:
const io = require('socket.io')();
io.on ('connection', client => {
client.emit('init', {data: 'hello world'})
})
io.listen(3000);
这是我的 package.json:
{
"type": "commonjs",
"devDependencies": {
"autoprefixer": "^10.4.7",
"postcss": "^8.4.14",
"tailwindcss": "^3.1.2"
},
"dependencies": {
"colyseus.js": "^0.14.13",
"moment": "^2.29.3",
"requirejs": "^2.3.6",
"socket.io": "^4.5.1",
"ws": "^8.8.0",
"ws-browser": "^11.4.8"
},
"optionalDependencies": {
"bufferutil": "^4.0.6",
"utf-8-validate": "^5.0.9"
}
}
有人知道如何解决我的问题吗?
您需要使用 Node.js 运行您的 Node.js 代码。
使用<script>
元素链接到它并尝试使用 Web 浏览器运行它是行不通的。 Web 浏览器不是 Node.js。
Web 浏览器没有支持运行服务器的功能。 Web 浏览器不支持 CommonJS 模块。 Web 浏览器不支持 Node.js 样式的模块解析,当您从名称而不是 URL import
时,它们会搜索node_modules
目录。
您需要使用 Node.js。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.