解决 Node.js 中的“Uncaught ReferenceError: require is not defined”错误

Posted

技术标签:

【中文标题】解决 Node.js 中的“Uncaught ReferenceError: require is not defined”错误【英文标题】:Resolve "Uncaught ReferenceError: require is not defined" error in Node.js 【发布时间】:2015-07-04 14:55:47 【问题描述】:

我正在尝试使用 SengGrid 设置基本联系表单,但我不断收到“未捕获的 ReferenceError:未定义要求”错误。

我在 html 页面头部的脚本标签中有这段代码。

    var sendgrid = require('sendgrid')(username,pass);

我查看了 requirejs,但我不确定为什么会收到此错误。有人可以向我解释如何解决这个问题吗?

【问题讨论】:

你真的在使用 node.js 吗?此代码应该添加到您的 javascript 服务器代码中,而不是 HTML 页面中。 Node.js 不在浏览器中。如果你想在浏览器中使用 requirejs,你需要使用脚本标签来加载它。 【参考方案1】:

require() 未内置在浏览器中。

所以当你说“我在 html 页面头部的脚本标记中有这段代码”时。这可以解释为什么在脚本运行时没有定义符号 require。如果你想在浏览器中使用require(),那么你需要先使用一个脚本标签来加载一个定义了require函数并支持require()类型功能的库,并确保加载成功后再尝试使用require()。 requirejs 就是您可以使用的此类库之一。

require() 内置在服务器上的 node.js 中,因此它始终可用。

【讨论】:

我需要做什么才能在 angularjs 中使用 require()? @cfl - 请重新阅读我的答案的中间段落。如果你想在浏览器中使用类似 require() 的功能,我会告诉你可以使用什么。这是一篇关于它的文章:sitepoint.com/using-requirejs-angularjs-applications【参考方案2】:

基本上,您需要为浏览器转换源代码,将 require 调用替换为实际的模块代码。 看看这些实用程序:

http://browserify.org/ - 它完全符合您的要求 https://webpack.github.io/ - 一个更复杂的 Web 打包框架,具有许多其他有用的功能。

【讨论】:

以上是关于解决 Node.js 中的“Uncaught ReferenceError: require is not defined”错误的主要内容,如果未能解决你的问题,请参考以下文章

如何解决node.js中的“消息内容必须是非空字符串”[关闭]

解决 Node.js 中的“Uncaught ReferenceError: require is not defined”错误

Node.js中的模块化,npm包管理器

如何通过部署 Node.js AWS Beanstalk 解决 /tmp/.config 中的权限问题?

如何解决 Bootstrap node.js 应用程序中的错误“无法设置未定义的属性 'emulateTransitionEnd'”?

异步 Node.js 循环中的变量范围