requirejs接管节点require()函数

时间:2015-08-20 15:45:45

标签: node.js requirejs

我正在尝试在requirejs define函数内加载npm请求模块。

define(function () {
console.log("run");
var request = require('request');
request('http://www.google.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body) // Show the HTML for the Google homepage.
    }
})
});

当浏览器点击require('request')时,会抛出此错误。

  

未捕获错误:尚未为上下文加载模块名称“request”:_。 >使用require([])

根据我的理解,nodejs和requirejs都定义了一个require()函数,所以在教程示例中, https://github.com/request/request 我相信当他们调用require()时它正在使用nodejs require函数,但在我的情况下,它认为require是不同的东西。 如果这实际上是问题,如何更改require或node的<(p>)的require()函数名称

1 个答案:

答案 0 :(得分:1)

如果我安装RequireJS和request并创建一个名为test.js的文件,其中包含:

var requirejs = require("requirejs");

requirejs("foo");

在同一目录中,我创建了一个名为foo.js的文件,其中包含您的代码:

define(function () {
console.log("run");
var request = require('request');
request('http://www.google.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body) // Show the HTML for the Google homepage.
    }
})
});

我执行:

$ node test.js

然后我在控制台上加run加上页面正文。

我尝试了变体:

  • 将RequireJS导入为requirevar require = require('requirejs')

  • 使用呼叫的异步形式:requirejs(["foo"])

  • 上述各种混合物。

我无法重现您举报的行为。