繁体   English   中英

未捕获的 ReferenceError:nodeJs 中未定义 require

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM