刚学习编程就遇到 Cannot find module 'Buffer' or its corresponding type declarations - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mikulch
V2EX    问与答

刚学习编程就遇到 Cannot find module 'Buffer' or its corresponding type declarations

  •  
  •   mikulch 2022-05-25 16:56:59 +08:00 1632 次点击
    这是一个创建于 1244 天前的主题,其中的信息可能已经有所发展或是发生改变。

    tsconfig.json

    { "compilerOptions": { "target": "esnext", // 指定 ECMAScript 的目标版本 "module": "esnext", // 指定编译生成哪个模块的系统代码, "outDir": "dist", // 编译输出目录,即 .ts 文件编译成 .js 文件后的输出目录。这里设置为根目录下的 /dist 目录 "strict": true, // 严格模式 "noImplicitAny": false, // 在表达式和声明上有隐含的 any 类型时报错。设为 false 避免当类型推论为 any 时报错 "moduleResolution": "node", // 决定如何处理模块。设置为 node "baseUrl": "./", // 定义 ts 项目的根目录,设置 paths 前必须设置 //定义路径别名,即当我们通过路径引入一个模块时,可以使用别名来进行引入,这里第一个 * 设置是为了引入第三方模块; 第二个 '@/*' 则是为了直接快捷的导入 /src 下的模块。 "paths": { "*": ["node_modules/*", "src/types/*"], "@/*": ["src/*"] }, "esModuleInterop": true, "skipLibCheck": true /* Skip type checking all .d.ts files. */, "sourceMap": true, "types": ["node"] } } 

    package.json

    { "name": "node-test", "version": "0.0.1", "description": "", "license": "MIT", "author": "xxx", "type": "module", "main": "index.js", "scripts": { "clean": "tsc --build --clean", "build": "tsc", "start": "node --es-module-specifier-resolution=node dist/index.js", "test": "mocha test/**/*.ts" }, "dependencies": {}, "devDependencies": { "@faker-js/faker": "^6.3.1", "@types/chai": "^4.3.1", "@types/mocha": "^9.1.1", "@types/node": "^17.0.35", "@types/sinon": "^10.0.11", "@types/sinon-chai": "^3.2.8", "@typescript-eslint/eslint-plugin": "^5.22.0", "@typescript-eslint/parser": "^5.22.0", "chai": "^4.3.6", "eslint": "^8.14.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-n": "^15.2.0", "eslint-plugin-promise": "^6.0.0", "mocha": "^10.0.0", "sinon": "^13.0.2", "sinon-chai": "^3.7.0", "ts-node": "^10.8.0", "typescript": "^4.6.4" } } 

    本地 node -v

    v14.19.1

    服务器 node -v

    v14.19.3

    问题

    本地编译运行都没有问题。代码拷贝到服务器以后,npm run build 出现错误:

    Cannot find module 'Buffer' or its corresponding type declarations. 2 import Buffer from "Buffer"; ~~~~~~~~ Found 1 error in service/core.ts:2 

    在网上搜了一天了,查到了类似的问题: https://stackoverflow.com/questions/38875401/getting-error-ts2304-cannot-find-name-buffer

    但是最终还是没解决。求大佬帮忙!

    7 条回复    2022-05-26 09:27:31 +08:00
    libook
        1
    libook  
       2022-05-25 17:53:04 +08:00   1
    你在服务器上有执行 npm install 吗?
    错误写得比较清晰,说找不到 Buffer 或找不到 Buffer 的类型定义,那么极有可能是你服务器上没有安装 @type/node 包,这个包就是包含 Node 的所有 API 的类型定义文件给 TS 编译器用的。

    想学的话还是建议从纯 JS 的 Node 开始,理解了 Node 的工作原理之后再考虑引入 TS ,这样循序渐进,毕竟 TS 不是只为 Node 提供的,Node 也不一定非要用 TS 。

    Node 的官方文档有 Guides ,也写得挺清晰的,看英文不方便也可以找中文翻译版,看完也花不了太多时间。
    zhangxh1023
        2
    zhangxh1023  
       2022-05-25 17:58:20 +08:00
    你是想要用 Buffer? Buffer 是不需要引入的呀,全局的,就算要引入 也是 buffer 小写的

    https://nodejs.org/dist/latest-v16.x/docs/api/buffer.html#buffer
    mikulch
        3
    mikulch  
    OP
       2022-05-25 18:01:46 +08:00
    @zhangxh1023 还真是这个问题,不过我引入了 buffer 小写的编译不通过,引入的不是这个实际使用的 buffer 。我已经把这个删除了。
    zhangxh1023
        4
    zhangxh1023  
       2022-05-25 18:04:44 +08:00
    @mikulch 不是实际引用的? dependencies 里面你也没声明额外的第三方的包呀,你这个 Buffer ,原本是想要用啥?搜了一下 npm 也没找到有叫 Buffer 的包
    mikulch
        5
    mikulch  
    OP
       2022-05-25 18:06:46 +08:00
    @zhangxh1023 就是想要全局的那个 Buffer ,操作二进制数据的那个类。应该是之前 import 错了。但是改成小写确实不行。

    Property 'concat' does not exist on type 'typeof import("buffer")'.

    51 const body = Buffer.concat(chunks);
    des
        6
    des  
       2022-05-25 19:56:15 +08:00 via iPhone
    @mikulch buffer 不需要 import 啊,你把 service/core.ts 第二行删掉再试试
    zhangxh1023
        7
    zhangxh1023  
       2022-05-26 09:27:31 +08:00
    @mikulch 你 import 错了应该
    import {Buffer} from 'buffer';
    注意 大括号,你可以 console.log 看一下 你 import 的是什么

    或者干脆不 import
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     945 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:42 PVG 05:42 LAX 14:42 JFK 17:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86