首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><scripts>节点js加载失败

<scripts>节点js加载失败
EN

Stack Overflow用户
提问于 2019-02-19 16:12:38
回答 1查看 2.9K关注 0票数 0

我尝试在我的Room.js服务器的客户端(v10.15.0+ express,socket.io)上使用index.html中的Node.js。我总是犯错误。当我通过index.html文件中的脚本标记加载它时,控制台会给我一个

加载“脚本”失败..。"Room.js“。 ReferenceError:房间没有定义

当我像这样在app.js中使用require时:

代码语言:javascript
复制
const roomObj = require("./client/js/Room.js");
const Room = new roomObj();

我只知道这个错误

ReferenceError:房间没有定义

Room.js

代码语言:javascript
复制
module.exports = Room;
function Room(name, o, obs, ep){
 this.name = name;
 this.o = o;
 this.obs = obs;
 this.getSth = function(ep){}
 this.loadRoom = function(){}
}

index.html

代码语言:javascript
复制
<script src="./js/Room.js"></script> 
<script>
 function loadRoom(){
   let room = new Room(name, o, obs, ep);
   room.loadRoom();
 }
</script>

更新

获取Room.js的404错误

当访问localhost:2000/js/和下面的子目录时,我得到了

无法获得/js/和每个其他路径的相同结果

解决方案:(来自答复中的评论)

将app.js中的第5-7行替换为

代码语言:javascript
复制
app.use(express.static(__dirname + "/client"));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-19 18:06:31

首先,检查Room.js是否与web服务器上的index.html位于同一个目录中。从您的第一个错误中,似乎找不到脚本文件。

如果没有,请将它们移动到inde.html中的同一个目录或正确的脚本标记。如果这不起作用,请参见下面的另一种可能的解决方案。

评论后的更新:

如果JS文件在./js/Room.js中,则需要将HTML中的脚本指向它。

代码语言:javascript
复制
<script src="./js/Room.js"></script> 
<script>
 function loadRoom(){
   let room = new Room(name, o, obs, ep);
   room.loadRoom();
 }
</script>

讨论后的更新:

服务器(Express)在根目录中加载index.html,在web服务器的子目录中加载client

您可以删除第5-7行(从您的链接),并替换为app.use(express.static(__dirname + "/client"));。这将将client加载到web服务器的根目录。

请注意,您可能仍然会遇到以下错误。

在浏览器中,没有定义module,所以module.exports会给出错误,脚本就会失败。

您应该从module.exports = Room;中删除行Room.js,以便在浏览器中正确加载文件。但是它不能在Node.js脚本中工作,因为函数Room不会从文件中导出。

如果您需要在Node.js和浏览器中使用相同的文件,我建议您使用Gulp、Webpack、Browserify、Parcel或其他web应用程序包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54770569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档