node.js:找不到模块“请求”


92

我安装了request模块,并收到错误消息:

module.js:340
    throw err;
          ^
Error: Cannot find module 'request'

我已经阅读了有关此错误的所有文章,并了解这是因为未全局找到模块请求,但是我已经尝试了2条建议

npm安装请求-g

应该把它安装在/ usr / loca / bin吗?因为我在那里看不到。

sudo npm链接

/ usr / local / lib / node_modules / request-> / Users / soulsonic / dev / sandbox / node_test / request

我在执行每个命令后都重新启动了终端,但始终收到找不到模块的错误。

更新

我的初始目录中肯定有某种冲突,因为切换到新目录后,“ npm install request”没有在node_modules下添加“ request”(那里还有10个)。

如果我使用-g开关运行它,我确实会看到它已安装到/ usr / local / lib / node_modules / request。

看来我只需要更新我的个人资料,即可自动添加上述路径。

Answers:


171

转到项目目录

mkdir TestProject
cd TestProject

将此目录设为项目的根目录(这将创建一个默认package.json文件)

npm init --yes

安装所需的npm模块并将其另存为项目依赖项(它将出现在中package.json

npm install request --save

test.js使用包示例中的代码在项目目录中创建文件

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body); // Print the google web page.
  }
});

您的项目目录应如下所示

TestProject/
- node_modules/
- package.json
- test.js

现在只需在项目目录中运行节点

node test.js

1
是的,这正是我所遵循的示例。我现在在测试项目中使用-g标志运行npm installer 10次。我可以看到在我的测试目录node_modules,但请求不存在..它仍然给我的错误..
索尼克魂

因为即使我遇到了一些奇怪的冲突,这些都是正确的步骤。一旦我在新目录中再次执行此操作,它就会起作用。我添加了发生在我身上的最新信息,这对其他人来说可能是罕见的
Sonic Soul

32

您只需在项目中request 本地安装即可。

cd到包含您的js文件的文件夹并运行

npm install request

在“ npm install request”之后,我确实将我的app.js复制到了request文件夹,并尝试从那里运行,结果相同。我将需要从多个项目中使用它。
Sonic Soul,

@SonicSoul:您误会了节点包的工作方式。 require('request')看着./node_modules/request,那就npm install放在那里。您应该npm install从每个应用程序的根目录运行,并且永远不要node_modules自己触摸该文件夹。
SLaks 2013年

在跑步之前npm install request,你应该跑步npm init。按照提示package.json在项目文件夹中创建一个。然后运行npm install -S request,它将既将请求模块安装到node_modules文件夹中,又将请求添加到您的package.json文件中
Noah,

@SLaks并不意味着每次安装任何需要在其根文件夹中输入并执行的软件包npm install吗?为他们所有人?
Drumnbass,2016年

@Drumnbass:否 npm install。也会安装所有依赖项。
SLaks

16

我遇到了同样的问题,对我来说npm install request --save 解决了这个问题。 希望能帮助到你。


1

我遇到了同样的问题,这就是我的工作方式。

打开终端:

mkdir testExpress
cd testExpress
npm install request

要么

sudo npm install -g request // If you would like to globally install.

现在不要使用

node app.js或node test.js,这样做会遇到此问题。您也可以使用此命令打印引起的问题。"node -p app.js"

上面的启动nodeJs的命令已被弃用。改为使用

npm start

你应该看到这个。

testExpress@0.0.0 start /Users/{username}/testExpress
node ./bin/www

打开您的Web浏览器并检查localhost:3000

您应该看到Express安装(欢迎使用Express)


1

我在全局安装它时遇到了同样的问题,然后尝试在本地安装它,并且它可以工作。


1

如果找不到某个模块,请尝试使用静态URI,例如:

var Mustache = require("/media/fabio/Datos/Express/2_required_a_module/node_modules/mustache/mustache.js");

此示例在64位的Ubuntu Gnome 16.04上运行,节点-v:v4.2.6,npm:3.5.2,请参阅:Ben Nadel博客


0

ReferenceError:找不到变量:require。

您已经安装了“ npm”,可以正常运行脚本到“ localhost”“ 127.0.0.1”。

在“ npm”中将http.clientRequest()与“ options”一起使用时,需要在模块内部安装“ RequireJS”。

模块是Node_modules目录中可由节点加载的任何文件或目录。安装“ RequiereJS”以使http.clientRequest(options)工作。


0

我尝试使用版本在本地安装模块,并且有效!!

npm install request@^2.*

谢谢。

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.