直接在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",

在这里插入图片描述

更多推荐