uni-app 【报Bug】 const result = target.match(/^(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?(-alpha)?$/)

发布于 1周前 作者 vueper 来自 Uni-App

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.01.0.0.11.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,因此在实际应用中添加适当的错误处理是很重要的。

回到顶部