首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

corCtf2022一道有意思node题

所以正确方法是利用 Express 对查询参数处理来构造一个精心设计对象来绕过。这里要进入到nodejs内部去才能一探究竟。...express 使用 qs npm 模块来提供 req.query.file (file 查询字符串参数名) ,这意味着它可以与字符串以外其他类型一起使用。 如:?...file[a]=b 可以看到后台报了这样错误 TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string...' } 分析报错原因可以发现 path 参数(传入req.query.file值),必须是 字符串 或是 一个Buffer实例 或是 一个URL实例,而我们传入是一个 Object(对象)。...(其实看名字和注释也能看出来) 注意调试时应全程注意传入path变量 getOptions 获取读取文件参数,它这默认是 ‘r’ 后面的 isFd 函数是判断 path 是否是个文件描述符(可以理解

1.8K30
您找到你想要的搜索结果了吗?
是的
没有找到

浅析 path 常用工具函数源码

而在 Node.js 中,我们可以使用 JS 中本来不存在 path (https://github.com/nodejs/node/blob/v16.14.0/lib/path.js) 模块,为了我们更加熟悉运用...'; } 根据参数获取路径,对接收参数进行遍历,参数长度大于等于 0 时都会开始进行拼接,对拼接好 path 进行非字符串校验,有不符合参数则抛出 throw new ERR_INVALID_ARG_TYPE...path 片段进行路径拼接 接收多个参数,利用特定分隔符作为定界符将所有的 path 参数连接在一起,生成新规范化路径。...接收参数后进行校验,如果没有参数的话,会直接返回 '.'...,反之进行遍历,通过内置 validateString 方法校验每个参数,如有一项不合规则直接 throw new ERR_INVALID_ARG_TYPE(name, 'string', value

1.6K30

nodejs中错误捕获一些最佳实践

首先,最重要是文档,描述这个函数做了些什么,接收什么类型参数返回什么,可能会触发什么错误。 一些基本原则: 同步函数里,使用throw。使用者使用try...catch即可捕获错误。...fs.stat(null,function(err){}) 在上例第二种情况,会立即返回TypeError: path must be a string or Buffer,也就是说内部使用了throw...你必须决定限制类型严格程度。 例如需要连接到一个服务器,函数接收一个ip地址作为参数,那么有几种做法: 函数只接收ip地址格式参数,如果不符合格式,则立即抛出异常。...编写functions具体建议 清楚function功能 必须明确几点:期待参数参数类型、额外约束(IP地址、QQ号码等) 如果任意一点不匹配,则立即抛出throw异常。...使用name属性来区分错误类型 例如RangeError、TypeError

1.1K10

nodejs 中错误捕获一些最佳实践

首先,最重要是文档,描述这个函数做了些什么,接收什么类型参数返回什么,可能会触发什么错误。 一些基本原则: 同步函数里,使用throw。使用者使用try...catch即可捕获错误。...fs.stat(null,function(err){}) 在上例第二种情况,会立即返回TypeError: path must be a string or Buffer,也就是说内部使用了throw...你必须决定限制类型严格程度。 例如需要连接到一个服务器,函数接收一个ip地址作为参数,那么有几种做法: 函数只接收ip地址格式参数,如果不符合格式,则立即抛出异常。...编写functions具体建议 清楚function功能 必须明确几点:期待参数参数类型、额外约束(IP地址、QQ号码等)。 如果任意一点不匹配,则立即抛出throw异常。...使用name属性来区分错误类型 例如RangeError、TypeError

2.9K00

nodejs中错误捕获一些最佳实践

首先,最重要是文档,描述这个函数做了些什么,接收什么类型参数返回什么,可能会触发什么错误。 一些基本原则: 同步函数里,使用throw。使用者使用try...catch即可捕获错误。...fs.stat(null,function(err){}) 在上例第二种情况,会立即返回TypeError: path must be a string or Buffer,也就是说内部使用了throw...你必须决定限制类型严格程度。 例如需要连接到一个服务器,函数接收一个ip地址作为参数,那么有几种做法: 函数只接收ip地址格式参数,如果不符合格式,则立即抛出异常。...编写functions具体建议 清楚function功能 必须明确几点:期待参数参数类型、额外约束(IP地址、QQ号码等) 如果任意一点不匹配,则立即抛出throw异常。...使用name属性来区分错误类型 例如RangeError、TypeError

1.7K60

nodejs中错误捕获一些最佳实践

首先,最重要是文档,描述这个函数做了些什么,接收什么类型参数返回什么,可能会触发什么错误。 一些基本原则: 同步函数里,使用throw。使用者使用try...catch即可捕获错误。...fs.stat(null,function(err){}) 在上例第二种情况,会立即返回TypeError: path must be a string or Buffer,也就是说内部使用了throw...你必须决定限制类型严格程度。 例如需要连接到一个服务器,函数接收一个ip地址作为参数,那么有几种做法: 函数只接收ip地址格式参数,如果不符合格式,则立即抛出异常。...编写functions具体建议 清楚function功能 必须明确几点:期待参数参数类型、额外约束(IP地址、QQ号码等) 如果任意一点不匹配,则立即抛出throw异常。...使用name属性来区分错误类型 例如RangeError、TypeError

1.3K30

理论 | nodejs中错误捕获一些最佳实践

首先,最重要是文档,描述这个函数做了些什么,接收什么类型参数返回什么,可能会触发什么错误。 一些基本原则: 1、同步函数里,使用throw。使用者使用try...catch即可捕获错误。...下面用一个特例来说明这一点: 在上例第二种情况,会立即返回TypeError: path must be a string or Buffer,也就是说内部使用了throw,这种情况是不是和上面提到有矛盾...你必须决定限制类型严格程度。 例如需要连接到一个服务器,函数接收一个ip地址作为参数,那么有几种做法: 1、函数只接收ip地址格式参数,如果不符合格式,则立即抛出异常。...编写functions具体建议 1、清楚function功能 必须明确几点:期待参数参数类型、额外约束(IP地址、QQ号码等) 如果任意一点不匹配,则立即抛出throw异常。...3、使用name属性来区分错误类型 例如RangeError、TypeError

1.3K10

Vue3 | VueCli、node.js安装、nrm切换镜像源、vue项目结构解读、Router详解、VueX详解

(name, 'string', value); ^ [TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type...,用于创建和初始化Router; 同时这里第二个参数 使用了路由参数routes; --- 注意 定义routes参数这里, path定义 路径、name定义 名称、component进行 组件引入...)自动改变: 带参数地 修改VueX数据 --- About.vue dispatch时, 传递 第一个参数action, 第二个参数意图改动目标数据参数: <...事件回调函数,自动生成两个形参, 第一个store实例, 第二个 组件中dispatch 传递过来 数据参数; --- mutations 事件回调函数,也自动生成两个形参, 第一个...ae8e9031947a302fed5f92425995aa19/jd/api/user/register; 其内容: 在About.vue中请求数据并显示: --- 主要注意要import; --- get方法参数

6.2K10

细说nodejspath模块

.js .css 等返回值:path 路径最后一部分注意:如果 path 不是字符串或者给定 ext 参数不是字符串,则抛出 TypeError如果有 ext 参数,当 ext 后缀名与文件名匹配上时返回文件名会省略文件后缀如果...(是否是绝对路径)path.isAbsolute(path)path:文件/目录路径返回值:true/false注意:如果 path 不是字符串,则抛出 TypeError如果给定 path 字符串长度.../','',index.js') // 'bar\index.js'path.join('foo', {}, 'bar'); // 'TypeError: Path must be a string....则返回 ''如果 from 或 to 任何一方空,则使用当前工作目录代替其空路径参考nodejs进阶视频讲解:进入学习const path = require("path");//当前工作目录 \...(将路径片段解析后生成绝对路径)注意:路径片段如果给出则必须是字符串类型,否则类型错误给定路径序列从右到左进行处理,每个后续 path 前置,直到构造出一个绝对路径如果处理完所有给定 path

85720

nodejspath模块

前言path 模块是 nodejs 中用于处理文件/目录路径一个内置模块,可以看作是一个工具箱,提供诸多方法供我们使用,当然都是和路径处理有关。....js .css 等返回值:path 路径最后一部分注意:如果 path 不是字符串或者给定 ext 参数不是字符串,则抛出 TypeError如果有 ext 参数,当 ext 后缀名与文件名匹配上时返回文件名会省略文件后缀如果...(是否是绝对路径)path.isAbsolute(path)path:文件/目录路径返回值:true/false注意:如果 path 不是字符串,则抛出 TypeError如果给定 path 字符串长度.../','',index.js') // 'bar\index.js'path.join('foo', {}, 'bar'); // 'TypeError: Path must be a string....(将路径片段解析后生成绝对路径)注意:路径片段如果给出则必须是字符串类型,否则类型错误给定路径序列从右到左进行处理,每个后续 path 前置,直到构造出一个绝对路径如果处理完所有给定 path

90430
领券