🖐🏻 免责声明
本教程仅供学习交流使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,请各读者自觉遵守相关法律法规。
# 初始化当前目录为node项目
npm init
这里会生成一个package.json文件,里面加入一行"type": "module"
node 分 CommonJS(require导入模块) 和 ES Module(import导入模块,写惯了web项目的会熟悉这一种) 两种模块规范,默认情况下,node 运行 CommonJS 模块,通过 package.json 的 type 字段来指定模块规范。
# 安装一个依赖
npm install ethers
# 运行单个脚本
node index.js即可运行
# 项目类型
# ES Module(import导入模块,写惯了web项目的会熟悉这一种)
# 导入一个自己写的js文件
假设我有一个文件httpUtil.js,内容如下
// 创建一个专门的 httpUtil.js 文件或者在网络模块中封装
import axios from "axios";
// 创建并配置 Axios 实例
const service = axios.create({
baseURL: "", // 设置基础 URL
timeout: 5000, // 设置超时时间
headers: {
"Content-Type": "application/json",
},
});
// 请求拦截器 - 在请求发出前做处理
service.interceptors.request.use(
(config) => {
// 添加 token 到 headers 中(假设从Vuex中获取)
// const token = store.getters["auth/token"];
// if (token) {
// config.headers.Authorization = `Bearer ${token}`;
// }
// 其他可能的预处理,如处理请求参数等
return config;
},
(error) => {
// 对请求错误做些什么
console.error("请求错误:", error);
Promise.reject(error);
}
);
// 响应拦截器 - 在收到响应后做处理
service.interceptors.response.use(
(response) => {
// console.log(response);
// 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据
if (response.status === 200) {
const res = response.data;
console.log(JSON.stringify(res, null, 2));
return res || {};
} else {
console.log(response.statusText);
return Promise.reject(new Error(response.statusText || "Error"));
}
},
(error) => {
// 对响应错误做处理
console.error("接口异常:", error);
// Message({
// message: error.message,
// type: "error",
// duration: 5 * 1000,
// });
return Promise.reject(error);
}
);
// 定义常用的请求方法
export const get = (url, params) => service.get(url, { params });
export const post = (url, data) => service.post(url, data);
export const put = (url, data) => service.put(url, data);
export const deleteRequest = (url, data) => service.delete(url, { data }); // 注意 DELETE 方法携带数据的方式因后端而异
// ... 其他HTTP方法的封装(如patch, head, options等)
用相对路径导入,最后不省略文件后缀,如js,肯定没问题
import { post } from "./httpUtil.js";
# CommonJS(require导入模块)
npm init的项目默认是这个风格
# 导入一个自己写的js文件
假设我有一个文件httpUtil.js,内容如下
注意,引入包和导出方法的方式都和ES Module不一样:exports.get = (url, params) => service.get(url, { params });
const axios = require("axios");
// 创建并配置 Axios 实例
const service = axios.create({
baseURL: "", // 设置基础 URL
timeout: 5000, // 设置超时时间
headers: {
"Content-Type": "application/json",
},
});
// 请求拦截器 - 在请求发出前做处理
service.interceptors.request.use(
(config) => {
// 添加 token 到 headers 中(假设从Vuex中获取)
// const token = store.getters["auth/token"];
// if (token) {
// config.headers.Authorization = `Bearer ${token}`;
// }
// 其他可能的预处理,如处理请求参数等
return config;
},
(error) => {
// 对请求错误做些什么
console.error("请求错误:", error);
Promise.reject(error);
}
);
// 响应拦截器 - 在收到响应后做处理
service.interceptors.response.use(
(response) => {
// console.log(response);
// 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据
if (response.status === 200) {
const res = response.data;
console.log(JSON.stringify(res, null, 2));
return res || {};
} else {
console.log(response.statusText);
return Promise.reject(new Error(response.statusText || "Error"));
}
},
(error) => {
// 对响应错误做处理
console.error("接口异常:", error);
// Message({
// message: error.message,
// type: "error",
// duration: 5 * 1000,
// });
return Promise.reject(error);
}
);
// 定义常用的请求方法
exports.get = (url, params) => service.get(url, { params });
exports.post = (url, data) => service.post(url, data);
exports.put = (url, data) => service.put(url, data);
exports.deleteRequest = (url, data) => service.delete(url, { data }); // 注意 DELETE 方法携带数据的方式因后端而异
// ... 其他HTTP方法的封装(如patch, head, options等)
用相对路径导入,最后不省略文件后缀,如js,肯定没问题
const { post } = require("./httpUtil.js");

