【问题标题】:Why can my node app not find socket.io-client (Cannot find module 'socket.io-client')为什么我的节点应用找不到socket.io-client(找不到模块'socket.io-client')
【发布时间】:2018-01-08 05:37:48
【问题描述】:

我正在尝试在 Amazon EC2 实例上设置 node、express 和 socket.io。我做了以下。

nvm install 6.11.5 //(node)
npm install express -g
npm install socket.io
npm install socket.io-client

错误:

module.js:471
  throw err;
  ^

Error: Cannot find module 'socket.io-client'
 at Function.Module._resolveFilename (module.js:469:15)
 at Function.Module._load (module.js:417:25)
 at Module.require (module.js:497:17)
 at require (internal/module.js:20:19)
 at Object.<anonymous> (/home/ec2-user/server/server.js:3:10)
 at Module._compile (module.js:570:32)
 at Object.Module._extensions..js (module.js:579:10)
 at Module.load (module.js:487:32)
 at tryModuleLoad (module.js:446:12)
 at Function.Module._load (module.js:438:3)

这是我的 server.js 文件的开头(它在 server/server.js 中)。

var express = require('express');
var io = require('socket.io-client');  <--- this is where error happens
var https = require('https');
var querystring = require('querystring');

如果我这样做npm list socket.io-client

我得到以下信息

myapp@1.0.0 /home/ec2-user/server
├─┬ socket.io@2.0.4
│ └── socket.io-client@2.0.4  deduped
└── socket.io-client@2.0.4 

【问题讨论】:

  • 您的 server.js 文件是否与您使用 npm install socket.io-client 安装 socket.io-client 的目录位于同一目录中?我注意到您在全局安装了 express,因此可以从任何地方找到它,但我能想到的唯一解释是您没有将 socket.io-client 安装在 server/server.js 文件所在的同一目录中。你能显示一个目录层次结构,同时显示 server.js 和你安装 socket.io-client 的位置吗?
  • 我想我明白了。我也永远用。所以我删除了我的forever.log 文件npm clean cache,npm install socket.io-client,npm init,永远重新启动,现在我在express 文件中得到一个错误。所以我认为它是固定的,因为我通过了 socket.io-client 代码行。全部在我的 /server 目录中(不再是全局的)。
  • 永远与任何事情有什么关系?在调试这样的核心问题时,您不应该永远开始它,因为它只会妨碍测试。当您完成测试并想要部署时,请永久使用。这个问题有答案吗?一个问题应该以答案结束,或者如果你想通了就删除,但没有有意义的答案可写。
  • 感谢永远的建议。我会考虑的。

标签: node.js sockets amazon-ec2 socket.io


【解决方案1】:

我想我明白了。我也永远用。所以我删除了我的forever.log 文件npm clean cache,npm install socket.io-client,npm init,永远重新启动,现在我在express 文件中得到一个错误。所以我认为它是固定的,因为我通过了 socket.io-client 代码行。全部在我的 /server 目录中(不再是全局的)。

【讨论】:

  • 那么,您认为问题的真正原因是什么?
  • 我相信 npm 缓存没有看到本地安装的 socket-io 并且它没有看到全局安装的路径,因为我在我的代码中引用了本地的。即使在我更改了参考之后,它也没有看到全球参考。我猜是因为缓存。
猜你喜欢
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 2014-07-02
  • 2021-02-16
  • 2014-05-13
  • 2015-05-20
相关资源
最近更新 更多