Javascript require()函数给出ReferenceError:require未定义


94

基本上,我使用javascript通过以下方式从Google Play商店中抓取数据:

一请求

2麦片

3-QueryString

我使用了来自Github的Google Market API,其使用require的方式如下:

var request   = require('request');
var cheerio   = require('cheerio');
var qs      = require('querystring');

但我得到以下

ReferenceError:需求未定义...

因此,我在javascript中没有要求,这对我来说不是新的,还是与众不同。


15
是的,require未在浏览器中定义。您将NodeJS教程与浏览器教程混合使用。
Elclanrs 2014年

1
请提供您正在使用的库的链接。
昆汀

Answers:


86

RequireJS是一个JavaScript文件和模块加载器。它针对浏览器内使用进行了优化,但可以在其他JavaScript环境中使用,例如Rhino和Node。使用像RequireJS这样的模块化脚本加载器将提高代码的速度和质量。

IE 6+ .......... compatible ✔
Firefox 2+ ..... compatible ✔
Safari 3.2+ .... compatible ✔
Chrome 3+ ...... compatible ✔
Opera 10+ ...... compatible ✔

http://requirejs.org/docs/download.html

将此添加到您的项目中:https : //requirejs.org/docs/release/2.3.5/minified/require.js

并看看这个http://requirejs.org/docs/api.html


32

默认情况下,require()这不是客户端javascript中的有效函数。我建议您研究require.js,因为这确实扩展了客户端,以向您提供该功能。


12

require异步模块定义(AMD)API的一部分

可以通过require.js找到浏览器实现,可以在node.js中找到本机支持。

您正在使用的库的文档应告诉您需要使用什么,我怀疑它旨在在Node.js下而不是在浏览器中运行。


@blogger —您的问题中没有PHP,全都是JavaScript。
昆汀

很抱歉,在错误的问题上发布,已删除源链接为:link并且它基于javascript,仍然无法使用require.js解决问题
Hunain Usman

@blogger —该模块具有旨在与Node.JS一起运行的所有特征。它可能根本无法在浏览器中运行。
昆汀2014年

在阅读完该问题的所有答案后,我现在可以理解,:p thanx为您的合作和编码提供了支持,并开始研究node.js
Hunain Usman 2014年

require是Commonjs而非AMD的一部分。
2017年

4

是的,require是一个Node.JS函数,在没有特定要求的情况下不能在客户端脚本中使用。如果在编写electronJS代码时遇到此错误,请尝试以下操作:

在BrowserWindow声明中,添加以下webPreferences字段:即,而不是plain mainWindow = new BrowserWindow(),请编写

mainWindow = new BrowserWindow({
        webPreferences: {
            nodeIntegration: true
        }
    });

2

对我来说,问题是我没有将我要引用的软件包的webpack构建模式设置为生产。将其显式设置为“ build”:“ webpack --mode production”解决了该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.