<scripts> 节点 js 加载失败
Posted
技术标签:
【中文标题】<scripts> 节点 js 加载失败【英文标题】:Loading failed for <scripts> node js 【发布时间】:2019-07-13 05:05:10 【问题描述】:我尝试在我的 Node.js 服务器(v10.15.0 + express,socket.io)客户端的 index.html 中使用我的 Room.js。 我不断收到错误。 当我通过 index.html 文件中的脚本标签加载它时,控制台给了我一个
使用 ..“Room.js”加载“脚本”失败。 ReferenceError: 房间未定义
当我像这样在 app.js 中使用 require 时:
const roomObj = require("./client/js/Room.js");
const Room = new roomObj();
我只得到这个错误
ReferenceError:房间未定义
Room.js
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
<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 行替换为
app.use(express.static(__dirname + "/client"));
【问题讨论】:
查看您的网络检查器,看看您是否没有收到 404 错误。Room.js
是否与 Web 服务器上的 index.html
位于同一目录中?你使用 Webpack 还是其他构建工具?
另外,您使用哪种浏览器?如果我尝试重现您的问题,我会收到 'module' is not defined
错误。
@Imarqs 是的,我收到 404 错误
@Filip 我使用的是 firefox 65.0.1x64,路径是 ./index.html 和 ./js/Room.js
【参考方案1】:
首先,检查Room.js
是否与Web 服务器上的index.html
位于同一目录中。从您的第一个错误来看,似乎找不到脚本文件。
如果没有,请将它们移动到同一目录或更正 inde.html
中的脚本标记。如果这不起作用,请参阅下面的另一种可能的解决方案。
评论后更新:
如果JS文件在./js/Room.js
中,则需要将HTML文件中的脚本指向它。
<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
会给出错误并且脚本会失败。
您应该从Room.js
中删除行module.exports = Room;
,这样文件才能在浏览器中正确加载。但是它在 Node.js 脚本中不起作用,因为函数 Room
不会从文件中导出。
如果您需要在 Node.js 和浏览器中使用相同的文件,我建议您使用 Gulp、Webpack、Browserify、Parcel 或其他 Web 应用程序捆绑器。
【讨论】:
我的 script.src 中有错字(已编辑)。仍然出现同样的错误,我需要将图像数据从 Room.js 加载到 clientBrowser @jje32dys 检查是否收到 404。如果收到,可能是路径错误或存在其他 HTTP 错误。尝试在浏览器中手动打开您的Room.js
文件并检查它是否加载。另外,请尝试在另一个浏览器中进行测试。
大概就是这样,但路径与我提到的相同。可能是什么问题?
尝试直接在浏览器中打开脚本。可能路径在 HTML 文件中没有正确解析。另外,尝试使用其他浏览器。在带有广告拦截器的 Firefox 中存在一些类似的错误 (***.com/questions/45879671/…)。问题也可能与 SSL 证书有关。检查链接问题中的答案是否适合您。
您能否提供控制台和网络检查器中的确切错误(可能是一些屏幕截图)。另外,如果可能的话,将 URL 发布到您的服务器,以便我看看会发生什么。以上是关于<scripts> 节点 js 加载失败的主要内容,如果未能解决你的问题,请参考以下文章