我尝试使用-g
开关
npm install -g socket.io
and it installed correctly I think.
但运行应用程序会抛出无法找到模块错误。
本地安装,即如果我的项目/包中的node_modules中存在socket.io,则可以正常工作。
所以不能全局安装吗?
答案 0 :(得分:4)
您误解了全局安装的含义。它允许您直接从控制台访问包。但是,如果您希望将require
打包到自己的应用程序中,则应将其作为依赖项添加到packaje.json
中并在本地安装。
以下是npm documentation的引文:
- 如果您要求(),请在本地安装。
- 如果要在命令行上运行它,请全局安装。
答案 1 :(得分:1)
当您全局安装软件包时,您所说的是您要在shell中使用它(cmd.exe)。像nodemon
之类的东西就是这样一个包你可以全局安装但不包含在本地,因为它不需要包含在你的应用程序中运行,而是用来让你作为开发人员受益。
当您的应用需要运行时,您可以在没有-g
开关的情况下安装软件包。在这种情况下,必须安装socket.io.请注意,本地安装的软件包应该放在packages.json
文件中,以便日后安装应用程序的任何人都可以自动获取所包含的软件包。全局包不会出现在此处。