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

时间:2014-05-12 07:42:10

标签: javascript dependency-management node-modules

基本上,我使用javascript从Google Play商店中抓取数据:

1 - 请求

2-麦片

3-查询字符串

我使用了Github的Google Market API,其中使用require如下:

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

但我得到以下

ReferenceError:未定义require ...

所以,我没有javascript的要求,这对我来说是新的,或者这是不寻常的。

7 个答案:

答案 0 :(得分:60)

  

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

答案 1 :(得分:22)

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

答案 2 :(得分:8)

requireAsynchronous Module Definition (AMD) API的一部分。

可以通过require.js找到浏览器实施,并且可以在node.js中找到原生支持。

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

答案 3 :(得分:4)

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

在BrowserWindow声明中,添加以下webPreferences字段: 即写

,而不是简单地mainWindow = new BrowserWindow()
mainWindow = new BrowserWindow({
        webPreferences: {
            nodeIntegration: true
        }
    });

答案 4 :(得分:2)

Require (https://requirejs.org/) 是一个 AMD API。我在我的应用程序中实现 monaco-editor 时遇到了类似的问题。这个脚本标签帮助了我:

<script src="https://requirejs.org/docs/release/2.3.5/minified/require.js"></script>

答案 5 :(得分:2)

浏览器没有定义 require 方法,但 Node.js 有。使用 Browserify,您可以编写使用 require 的代码,就像在 Node 中使用它一样。

使用以下命令安装browserify

npm install -g browserify

现在使用 browserify 命令递归地将所有必需的模块(如 main.js)捆绑到一个名为 bundle.js 的文件中:

browserify main.js -o bundle.js

将单个标签放入您的 html 中,您就大功告成了!

<script src="bundle.js"></script>

欲了解更多详情,请点击此处 https://www.npmjs.com/package/browserifyhttps://browserify.org/#install

答案 6 :(得分:0)

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