将我的node.js应用程序部署到另一台PC(在开发机器中运行完美)并手动安装所有依赖项后,我在尝试执行时遇到此错误:
C:\Users\myself>node app.js
module.js:340
throw err;
^
Error: Cannot find module 'xmlhttprequest'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (c:\Keystroke\node_modules\socket.io\node_modules\socket.io-client\node_modules\engine.io-client\lib\transports\index.js:5:22)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (c:\Keystroke\node_modules\socket.io\node_modules\socket.io-client\node_modules\engine.io-client\lib\socket.js:5:18)
但如果我跑
npm ls -g
它返回全局安装的模块列表,它包含xmlhttprequest。那为什么我的应用程序无法找到它?我做错了什么?
答案 0 :(得分:11)
该模块可能还需要为项目安装本地。
你有一个package.json文件吗?如果是,请运行:
npm install --save xmlhttprequest
下次在您的repo目录中,所以当您的交换机运行时,您可以运行npm install
来检索所有依赖项。
某些依赖项在计算机上全局安装时无用。
答案 1 :(得分:1)
是什么意思
手动安装所有依赖项?
通常,我们会按npm install --save
或npm install --save-dev
安装依赖项,当我需要迁移到另一个环境时,我只需克隆源代码并从根目录激活npm install
该项目,它将为我带来所有的魔力。
如果您使用的软件包是c ++插件,有时会出现问题,如果您使用的节点版本与开发环境和产品环境不同,则无法安装,请注意。我通常使用nvm
作为我的节点版本管理,nvmw
用于Windows,这可以节省很多时间。