uni-app 【报Bug】 const result = target.match(/^(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?(-alpha)?$/)
uni-app 【报Bug】 const result = target.match(/^(\d+).(\d+).(\d+)(?:.(\d+))?(-alpha)?$/)
操作步骤:
PS C:\Users\xzz\Desktop\wx-xyzs-app> npx @dcloudio/uvm 4.24
D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\lib\version.js:47
const result = target.match(/^(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?(-alpha)?$/)
^
TypeError: target.match is not a function
at find (D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\lib\version.js:47:25)
at start (D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\bin\index.js:16:25)
at Object.<anonymous> (D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\bin\index.js:30:1)
at Module._compile (node:internal/modules/cjs/loader:1376:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
at Module.load (node:internal/modules/cjs/loader:1207:32)
at Module._load (node:internal/modules/cjs/loader:1023:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
at node:internal/main/run_main_module:28:49
Node.js v20.10.0
预期结果:
PS C:\Users\xzz\Desktop\wx-xyzs-app> npx @dcloudio/uvm 4.24
D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\lib\version.js:47
const result = target.match(/^(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?(-alpha)?$/)
^
TypeError: target.match is not a function
at find (D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\lib\version.js:47:25)
at start (D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\bin\index.js:16:25)
at Object.<anonymous> (D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\bin\index.js:30:1)
at Module._compile (node:internal/modules/cjs/loader:1376:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
at Module.load (node:internal/modules/cjs/loader:1207:32)
at Module._load (node:internal/modules/cjs/loader:1023:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
at node:internal/main/run_main_module:28:49
Node.js v20.10.0
实际结果:
PS C:\Users\xzz\Desktop\wx-xyzs-app> npx @dcloudio/uvm 4.24
D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\lib\version.js:47
const result = target.match(/^(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?(-alpha)?$/)
^
TypeError: target.match is not a function
at find (D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\lib\version.js:47:25)
at start (D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\bin\index.js:16:25)
at Object.<anonymous> (D:\nodejs\node_cache\_npx\f06a30b2e514f95e\node_modules\@dcloudio\uvm\bin\index.js:30:1)
at Module._compile (node:internal/modules/cjs/loader:1376:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
at Module.load (node:internal/modules/cjs/loader:1207:32)
at Module._load (node:internal/modules/cjs/loader:1023:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
at node:internal/main/run_main_module:28:49
Node.js v20.10.0
bug描述:
将hbuilder3.8.12更新依赖到指定版本4.24报错
3 回复
你好,你这里的target是什么?贴一下完整的代码。
这是完整的报错代码,运行了npx @dcloudio/uvm 4.24就报错const result = target.match(/^(\d+).(\d+).(\d+)(?:.(\d+))?(-alpha)?$/) ,但是我的代码里面并没有写过这行代码
在处理 uni-app
中关于正则表达式匹配的问题时,首先需要确保你理解正则表达式的结构和意图。你提供的正则表达式 ^(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?(-alpha)?$
用于匹配类似版本号格式的字符串,如 1.0.0
、1.0.0.1
或 1.0.0-alpha
。
以下是如何在 uni-app
中使用此正则表达式并处理匹配结果的代码示例。此代码假设 target
是一个包含版本号的字符串变量。
// 假设 target 是你要匹配的版本号字符串
let target = "1.2.3-alpha";
// 定义正则表达式
const versionRegex = /^(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?(-alpha)?$/;
// 使用 match 方法进行匹配
const result = target.match(versionRegex);
// 检查是否匹配成功
if (result) {
// result[0] 是整个匹配的字符串
console.log("完整匹配:", result[0]);
// result[1] 是主版本号
console.log("主版本号:", result[1]);
// result[2] 是次版本号
console.log("次版本号:", result[2]);
// result[3] 是修订版本号
console.log("修订版本号:", result[3] || "无修订版本号"); // 使用 || 操作符处理未定义的修订版本号
// result[4] 是可选的第四位版本号(如果存在)
console.log("第四位版本号:", result[4] || "无第四位版本号");
// result[5] 是可选的 -alpha 标记(如果存在)
console.log("Alpha 标记:", result[5] || "无 Alpha 标记");
} else {
console.error("版本号格式不匹配");
}
在这个代码示例中:
target
变量被设置为一个版本号字符串。versionRegex
是你提供的正则表达式。match
方法被用来检查target
是否符合正则表达式的模式。result
数组包含了匹配的详细信息,其中result[0]
是整个匹配的字符串,result[1]
到result[5]
分别对应正则表达式的各个捕获组。- 使用条件运算符 (
||
) 来处理可能未定义的捕获组(例如,如果版本号没有第四位数字,则result[4]
为undefined
)。
确保在 uni-app
中适当地处理正则表达式匹配结果,并根据你的应用逻辑进行进一步的处理或错误处理。如果 target
字符串不符合预期格式,match
方法将返回 null
,因此在实际应用中添加适当的错误处理是很重要的。