{ "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"] } }
{ "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" } }
v14.19.1
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
但是最终还是没解决。求大佬帮忙!
![]() | 1 libook 2022-05-25 17:53:04 +08:00 ![]() 你在服务器上有执行 npm install 吗? 错误写得比较清晰,说找不到 Buffer 或找不到 Buffer 的类型定义,那么极有可能是你服务器上没有安装 @type/node 包,这个包就是包含 Node 的所有 API 的类型定义文件给 TS 编译器用的。 想学的话还是建议从纯 JS 的 Node 开始,理解了 Node 的工作原理之后再考虑引入 TS ,这样循序渐进,毕竟 TS 不是只为 Node 提供的,Node 也不一定非要用 TS 。 Node 的官方文档有 Guides ,也写得挺清晰的,看英文不方便也可以找中文翻译版,看完也花不了太多时间。 |
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 |
![]() | 3 mikulch OP @zhangxh1023 还真是这个问题,不过我引入了 buffer 小写的编译不通过,引入的不是这个实际使用的 buffer 。我已经把这个删除了。 |
4 zhangxh1023 2022-05-25 18:04:44 +08:00 @mikulch 不是实际引用的? dependencies 里面你也没声明额外的第三方的包呀,你这个 Buffer ,原本是想要用啥?搜了一下 npm 也没找到有叫 Buffer 的包 |
![]() | 5 mikulch OP @zhangxh1023 就是想要全局的那个 Buffer ,操作二进制数据的那个类。应该是之前 import 错了。但是改成小写确实不行。 Property 'concat' does not exist on type 'typeof import("buffer")'. 51 const body = Buffer.concat(chunks); |
![]() | 6 des 2022-05-25 19:56:15 +08:00 via iPhone @mikulch buffer 不需要 import 啊,你把 service/core.ts 第二行删掉再试试 |
7 zhangxh1023 2022-05-26 09:27:31 +08:00 @mikulch 你 import 错了应该 import {Buffer} from 'buffer'; 注意 大括号,你可以 console.log 看一下 你 import 的是什么 或者干脆不 import |