You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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不会自动帮你引入第三方模块,必须手动安装到项目中才行。具体解决步骤如下:

  1. 打开终端,切换到你的项目目录
    先确保终端当前路径是baktozip.js所在的文件夹(比如你这里是C:\Users\Nikla\Desktop\programmig\js\),如果不是的话,用cd命令切换过去:

    cd C:\Users\Nikla\Desktop\programmig\js\
    
  2. 安装adm-zip依赖
    在当前项目目录下运行安装命令:

    npm install adm-zip
    

    这个命令会把adm-zip模块安装到项目的node_modules文件夹里,同时如果你的项目有package.json,还会自动把它添加到依赖列表中。要是你还没有package.json,可以先运行npm init -y快速生成一个默认的配置文件。

  3. 额外小提示:路径转义问题
    另外注意你代码里的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

火山引擎 最新活动