直接在main.ts入口文件里写的,结果http无法点进去,找不到路径
const http = require("http");
但是axios就可以
import axios from "axios";
所以我在想是不是引入模块的方式有问题,尝试在tsconfig.json里面修改了module,发现是有影响,但是无法解决问题
也不是没有局部安装node,这个好像不能是一个问题,node可以多版本,但是貌似不能局部安装
下载了别人的一个模版进行对比,发现人家的@types/node的版本是12.0.2和运行在我电脑上的node版本是15.14
并且,他的模版里面,写的是,import
import http from 'http'
我在我这边项目里写import就可以找到http路径,但是无法用,因为声明里写,必须要用require来导入

而且之前的猜测,搜索答案均无法解决,所以到这里我怀疑是@types/node是不是要对应node的版本,在我项目里面的@types/node版本是最新的,“^17.0.25”,所以应该是支持的node17,
先去看看这个有没有对应关系,再看看需不需要降低版本
降低版本后,用require还是无法链接到类型声明文件,但是import是可以的,不过项目用webpack打包依旧是有问题的,webpack还是提醒无法找到该模块。
但是ts-node是可以运行的,
webpack仅仅是用来打包的,而ts想要运行node,需要的是ts-node,
如果想动态运行,类似nodemon,则需要ts-node-dev
所以我这里把start脚本写成ts-node-dev的相关命令,而不是webpack,
后面再试试能不能用webpack实现运行ts的node
但是按理说,webpack进行转译js然后打包,然后通过webpack-dev-server服务器运行这个脚本,应该是行得通的,因为这个服务器也是express框架搭建的啊,之前用这个是进行html页面之类的,这里本身就写了一个服务器代码,会不会重复,然后出bug,
这还是第二个问题,第一个问题就是,我连打包都成问题,根本还没运行npm run serve
是运行的npm run build
这个问题在于webpack的配置,webpack.config.js里面target:'node'才行

// 可以尝试配置命令,每次打包后,用node运行打包好的js
比如这样,脚本里可以直接写node的命令,也可以写npm run xxx的一些命令,参考
"serve": "webpack && node ./dist/bundle.js",

在 TypeScript 和 Node.js 项目中遇到 `Module not found: Error: Can't resolve 'http'` 错误。问题可能与模块引入方式、Node.js 版本、@types/node 版本以及 webpack 配置有关。尝试过更改模块引入方式、匹配 @types/node 版本与 Node.js 版本,但问题未解决。使用 require 导入时,ts-node 可运行但 webpack 打包失败;使用 import 时,webpack 仍报错。目前怀疑是 webpack 配置问题,计划调整 webpack.config.js 文件来解决打包问题。

1万+

被折叠的 条评论
为什么被折叠?



