我在设置的Ubuntu开发服务器上正确安装md5
节点模块时遇到了一些问题。
(它在我的本地Windows机器上工作正常,我可以在开发服务器上安装npm的其他模块)
当我尝试启动NodeJS应用程序时,我正在处理它失败,说明未安装md5
模块。
// trying to start my application that depends on md5.
drichardson@devwebserver:/var/www/node_app/meanapp$ node server.js
module.js:340
throw err;
^
Error: Cannot find module 'md5'
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> (/var/www/node_app/node_modules/hashfile/index.js:7:11)
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> (/var/www/node_app/meanapp/app/controllers/exchanges.server.controller.js:15:14)
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)
我已经尝试在我的工作目录中安装它:
// Installing in working directory
drichardson@devwebserver:/var/www/node_app/meanapp$ sudo npm install --save md5
npm http GET https://registry.npmjs.org/md5
npm http GET https://registry.npmjs.org/md5
npm http 304 https://registry.npmjs.org/md5
npm http GET https://registry.npmjs.org/is-buffer
npm http GET https://registry.npmjs.org/crypt
npm http GET https://registry.npmjs.org/charenc
npm http 304 https://registry.npmjs.org/crypt
npm http GET https://registry.npmjs.org/is-buffer
npm http GET https://registry.npmjs.org/charenc
npm http 200 https://registry.npmjs.org/is-buffer
npm http GET https://registry.npmjs.org/is-buffer/-/is-buffer-1.0.2.tgz
npm http GET https://registry.npmjs.org/is-buffer/-/is-buffer-1.0.2.tgz
npm http GET https://registry.npmjs.org/charenc
npm http GET https://registry.npmjs.org/charenc/-/charenc-0.0.1.tgz
npm http 200 https://registry.npmjs.org/charenc/-/charenc-0.0.1.tgz
npm http GET https://registry.npmjs.org/is-buffer/-/is-buffer-1.0.2.tgz
npm http 200 https://registry.npmjs.org/is-buffer/-/is-buffer-1.0.2.tgz
md5@2.0.0 node_modules/md5
├── charenc@0.0.1
├── crypt@0.0.1
└── is-buffer@1.0.2
即使节点模块显示在我的/ node_modules文件夹中,它仍会抛出&#34;找不到模块md5
&#34;
// MD5 In my node_modules folder:
drichardson@devwebserver:/var/www/node_app/meanapp/node_modules$ ls -la | grep 'md5'
drwxr-xr-x 2 drichardson drichardson 4096 Oct 30 13:53 md5
我也尝试过:
- 使用&#34; npm install -g md5&#34; 全局安装模块
- 清理缓存并重新安装&#34; npm缓存清理&#34;
- 使用&#34; npm install&#34;
我还能尝试什么来让npm将md5识别为已安装?
谢谢,
答案 0 :(得分:5)
我遇到了类似的问题,问题不在于安装模块的地方,而是因为main
文件中的package.json
属性未正确设置。就我而言,它指的是一个不存在的文件。确保为模块正确设置了"main":"..."
。
如果这是您无法控制的模块,作为快速修复,您可以在最近的node_modules目录中进行更改。在我们的例子中,这位于项目的根目录中。
答案 1 :(得分:0)
您可以尝试清除整个node_modules并重新安装所有内容吗?
rm -rf node_modules
npm install
答案 2 :(得分:0)
在文件夹 / var / www / node_app / node_modules / hashfile /
中运行npm install md5
你试过这个吗?
答案 3 :(得分:0)
我的问题最终是我在本地运行的 Node 和 NPM 版本与在我的 Docker 容器中运行的版本不同。
# Local versions:
$ node --version
v12.18.2
$ npm --version
6.14.10
我改变了我的Dockerfile
FROM node:15-alpine3.12
# ^^
# ...
到
FROM node:12-alpine3.12
# ^^
# ...