Node.js中使用adm-zip创建压缩包提示“Cannot find module 'adm-zip'”的问题咨询
Node.js中使用adm-zip创建压缩包提示“Cannot find module 'adm-zip'”的问题咨询
我的问题:
我尝试用adm-zip创建一个.zip压缩包,代码如下:
const fs = require('fs'); const AdmZip = require('adm-zip'); //Path to the .bak file const bakFilePath = 'C:\Users\Nikla\Documents\AdventureWorksDW2022.bak'; //Path to the output .zip file const zipFilePath = 'C:\Users\Nikla\Documents\zip'; //Read the .bak file const bakBytes = fs.readFileSync(bakFilePath); //Create a new zip archive const zip = new AdmZip(); zip.addFile('file.bak', bakBytes); //Write the zip file to disk zip.writeZip(zipFilePath); console.log(`Conversion complete: ${zipFilePath}`);
但运行代码时,终端总是报错:
> C:\Program Files\nodejs\node.exe .\baktozip.js Uncaught Error Error: Cannot find module 'adm-zip' Require stack: - C:\Users\Nikla\Desktop\programmig\js\baktozip.js at <anonymous> (<node_internals>/internal/modules/cjs/loader:1225:15) at <anonymous> (<node_internals>/internal/modules/cjs/loader:1055:27) at traceSync (<node_internals>/diagnostics_channe1:322:14) at wrapModuleLoad (<node_internals>/internal/modules/cjs/loader:220:24) at <anonymous> (<node_internals>/internal/modules/cjs/loader:1311:12) at require (<node_internals>/internal/modules/helpers:136:16) at <anonymous> (c:\Users\Nikla\Desktop\programmig\js\baktozip.js:2:16) at <anonymous> (<node_internals>/internal/modules/cjs/loader:1554:14) at <anonymous> (<node_internals>/internal/modules/cjs/loader:1706:10) at <anonymous> (<node_internals>/internal/modules/cjs/loader:1289:32) at <anonymous> (<node_internals>/internal/modules/cjs/loader:1108:12) at traceSync (<node_internals>/diagnostics_channe1:322:14) at wrapModuleLoad (<node_internals>/internal/modules/cjs/loader:220:24) at executeUserEntryPoint (<node_internals>/internal/modules/run_main:170:5) at <anonymous (<node_internals>/internal/main/run_main_module:36:49) Process exited with code 1
为什么会出现这个错误?我需要安装什么吗?
解决方案:
嗨,这个问题超常见的,本质就是你的项目里还没安装adm-zip这个第三方依赖包!Node.js不会自动帮你引入第三方模块,必须手动安装到项目中才行。具体解决步骤如下:
打开终端,切换到你的项目目录
先确保终端当前路径是baktozip.js所在的文件夹(比如你这里是C:\Users\Nikla\Desktop\programmig\js\),如果不是的话,用cd命令切换过去:cd C:\Users\Nikla\Desktop\programmig\js\安装adm-zip依赖
在当前项目目录下运行安装命令:npm install adm-zip这个命令会把
adm-zip模块安装到项目的node_modules文件夹里,同时如果你的项目有package.json,还会自动把它添加到依赖列表中。要是你还没有package.json,可以先运行npm init -y快速生成一个默认的配置文件。额外小提示:路径转义问题
另外注意你代码里的Windows路径写法,单反斜杠\在JavaScript里是转义字符,比如\U会被解析成特殊字符,可能导致找不到文件。建议把路径改成双反斜杠\\或者正斜杠/:// 改成双反斜杠 const bakFilePath = 'C:\\Users\\Nikla\\Documents\\AdventureWorksDW2022.bak'; const zipFilePath = 'C:\\Users\\Nikla\\Documents\\zip'; // 或者正斜杠(更推荐,跨平台兼容) const bakFilePath = 'C:/Users/Nikla/Documents/AdventureWorksDW2022.bak'; const zipFilePath = 'C:/Users/Nikla/Documents/zip';
安装完成后,再重新运行你的脚本,应该就能正常执行,不会再出现找不到模块的错误啦!
备注:内容来源于stack exchange,提问作者Niklas Westphal




