当前位置: 首页 > 面试题库 >

节点上的客户端:未捕获ReferenceError:未定义require

燕刚毅
2023-03-14
问题内容

因此,我正在使用node / express + jade组合编写应用程序

我有client.js,已在客户端上加载。在该文件中,我有调用其他JavaScript文件中的函数的代码。我的尝试是使用

var m = require('./messages');

为了加载内容messages.js(就像我在服务器端一样),然后再加载该文件的调用函数。但是,require未在客户端定义,并且抛出形式的错误Uncaught ReferenceError: require is not defined

这些其他JS文件也在客户端的运行时加载,因为我将链接放置在网页的标题处。因此,客户端知道从这些其他文件导出的所有功能。

如何从打开服务器套接字messages.js的主client.js文件中的其他JS文件(如)调用这些函数?


问题答案:

这是因为require()浏览器/客户端JavaScript中不存在。

现在,您将不得不对客户端JavaScript脚本管理做出一些选择。

您有三种选择:

  1. 使用<script>标签。
  2. 使用CommonJS实现。同步依赖项,例如Node.js
  3. 使用AMD实施。

CommonJS 客户端实现包括:

(其中大多数需要在部署之前进行构建)

  1. Browserify-您可以在浏览器中使用大多数Node.js模块。这是我个人的最爱。
  2. Webpack-做所有事情(捆绑JS,CSS等)。由于React.js的激增而流行。因学习曲线困难而臭名昭著。
  3. 汇总 -新竞争者。利用ES6模块。包括摇树能力(删除未使用的代码)。

您可以阅读有关我的Browserify与(不推荐使用)Component比较的更多信息。

AMD的 实现包括:

  1. RequireJS-在客户端JavaScript开发人员中非常受欢迎。不是我的口味,因为它具有异步特性。

请注意,在搜索选择与之搭配的产品时,您会了解到Bower。Bower仅用于程序包依赖关系,并且在CommonJS和AMD等模块定义上不受质疑。

希望这会有所帮助。



 类似资料:
  • 问题内容: 因此,我正在使用node / express + jade组合编写应用程序。 我有,已在客户端上加载。在该文件中,我有调用其他JavaScript文件中的函数的代码。我的尝试是使用 为了加载内容(就像我在服务器端一样),然后再加载该文件的调用函数。但是,未在客户端定义,并且抛出形式的错误。 这些其他JS文件也在客户端的运行时加载,因为我将链接放置在网页的标题处。因此,客户端知道从这些其

  • 我正在用node.js、express.js和Jade组合编写一个应用程序。 我有文件,它加载在客户端上。在该文件中,我有调用其他JavaScript文件中的函数的代码。我想用 以便加载的内容(就像我在服务器端所做的那样),并随后从该文件调用函数。但是,未在客户端定义,它会抛出一个格式为的错误。 这些其他JavaScript文件也是在运行时加载到客户端的,因为我将链接放置在网页的头部。因此客户端知

  • 问题内容: 我在简单的jsp上遇到此错误:未捕获的ReferenceError:未定义$ 我只是试着在eclipse上的其他项目上调用服务,但似乎不起作用。 代码在这里: 更新: 尝试使用Google CDN的jQuery,但仍然无法正常工作 未捕获的ReferenceError:$未定义sendobject @ index.jsp:15onclick @ index.jsp:28 因为该问题的所

  • 问题内容: 我正在尝试将Admin Widget与两个DateField一起使用在我的配方中,但是只有第一个可以正确显示Widget,而另一个则出现错误: DateTimeShortcuts.js:205未捕获的ReferenceError:未定义django (指示的行是: ) 这是我的模板头: 我的模型领域: 和我的形式课: 我想这是某种渲染规则,但我完全感到困惑。欢迎任何帮助! 问题答案:

  • 问题内容: 我正在尝试在React JS中使用DRY。我正在尝试在不同文件中使用相同的HTML部分 部分: 我在另一个文件中请求它: 但是我遇到一个错误: 该脚本包含在html页面中,例如: 我正在使用webpack 问题答案: 如果您未使用任何webpack等模块捆绑程序,则应将组件分配给某些javascript全局对象,因为.jsx中的对象未置于全局范围内 所以这是解决方案(这里使用了 窗口

  • 我创建了一个简单的webapp,在Rails3.2.17应用程序中集成了bootstrap 3,遵循stackoverflow上的这一过程,因此不使用gem,而是手动复制相关应用程序目录中的bootstrap文件。 即使我有,在我的gem文件中: 我仍然可以看到,用chrome检查我的网页,错误: