@@ -4,7 +4,10 @@ const { execSync } = require('child_process');
4
4
const fs = require ( 'fs' ) ;
5
5
const path = require ( 'path' ) ;
6
6
7
- const KV_NAMESPACE_NAME = 'sublink-worker-SUBLINK_KV' ;
7
+ const KV_NAMESPACE = 'SUBLINK_KV' ;
8
+ const WORKER_NAME = 'sublink-worker'
9
+ const KV_NAMESPACE_NAME = `${ WORKER_NAME } -${ KV_NAMESPACE } ` ;
10
+ const LEGACY_KV_NAMESPACE_NAME = `${ WORKER_NAME } -${ WORKER_NAME } -${ KV_NAMESPACE } ` ; // 历史遗留的命名空间名称
8
11
const WRANGLER_CONFIG_PATH = path . join ( __dirname , '..' , 'wrangler.toml' ) ;
9
12
10
13
// 执行wrangler命令并返回结果
@@ -20,28 +23,56 @@ function runWranglerCommand(command) {
20
23
21
24
// 检查KV namespace是否存在
22
25
function checkKvNamespaceExists ( ) {
23
- console . log ( `正在检查KV namespace "${ KV_NAMESPACE_NAME } "是否存在...` ) ;
26
+ console . log ( `正在检查KV namespace "${ KV_NAMESPACE_NAME } "和" ${ LEGACY_KV_NAMESPACE_NAME } " 是否存在...` ) ;
24
27
const output = runWranglerCommand ( 'kv namespace list' ) ;
25
28
26
29
try {
27
30
// 尝试从输出中提取JSON部分(如果有)
28
31
const jsonMatch = output . match ( / \[ [ \s \S ] * \] / ) ;
29
32
if ( jsonMatch ) {
30
33
const namespaces = JSON . parse ( jsonMatch [ 0 ] ) ;
31
- return namespaces . find ( ns => ns . title === KV_NAMESPACE_NAME ) ;
34
+ // 优先检查当前命名格式的命名空间
35
+ const primaryNamespace = namespaces . find ( ns => ns . title === KV_NAMESPACE_NAME ) ;
36
+ if ( primaryNamespace ) {
37
+ console . log ( `找到命名空间: ${ KV_NAMESPACE_NAME } ` ) ;
38
+ return primaryNamespace ;
39
+ }
40
+
41
+ // 如果当前格式不存在,检查遗留命名格式
42
+ const legacyNamespace = namespaces . find ( ns => ns . title === LEGACY_KV_NAMESPACE_NAME ) ;
43
+ if ( legacyNamespace ) {
44
+ console . log ( `找到遗留命名空间: ${ LEGACY_KV_NAMESPACE_NAME } ` ) ;
45
+ return legacyNamespace ;
46
+ }
47
+
48
+ return null ;
32
49
}
33
50
34
51
// 如果没有匹配到JSON格式,就使用正则表达式查找namespace
35
- const namespaceRegex = new RegExp ( `"${ KV_NAMESPACE_NAME } "\\s*([a-zA-Z0-9-]+)` ) ;
36
- const match = output . match ( namespaceRegex ) ;
52
+ // 首先尝试当前命名格式
53
+ let namespaceRegex = new RegExp ( `"${ KV_NAMESPACE_NAME } "\\s*([a-zA-Z0-9-]+)` ) ;
54
+ let match = output . match ( namespaceRegex ) ;
37
55
38
56
if ( match ) {
57
+ console . log ( `找到命名空间: ${ KV_NAMESPACE_NAME } ` ) ;
39
58
return {
40
59
title : KV_NAMESPACE_NAME ,
41
60
id : match [ 1 ]
42
61
} ;
43
62
}
44
63
64
+ // 然后尝试遗留命名格式
65
+ namespaceRegex = new RegExp ( `"${ LEGACY_KV_NAMESPACE_NAME } "\\s*([a-zA-Z0-9-]+)` ) ;
66
+ match = output . match ( namespaceRegex ) ;
67
+
68
+ if ( match ) {
69
+ console . log ( `找到遗留命名空间: ${ LEGACY_KV_NAMESPACE_NAME } ` ) ;
70
+ return {
71
+ title : LEGACY_KV_NAMESPACE_NAME ,
72
+ id : match [ 1 ]
73
+ } ;
74
+ }
75
+
45
76
return null ;
46
77
} catch ( error ) {
47
78
console . error ( '解析KV namespace列表失败:' , error . message ) ;
@@ -53,7 +84,7 @@ function checkKvNamespaceExists() {
53
84
// 创建KV namespace
54
85
function createKvNamespace ( ) {
55
86
console . log ( `创建KV namespace "${ KV_NAMESPACE_NAME } "...` ) ;
56
- const output = runWranglerCommand ( `kv namespace create "${ KV_NAMESPACE_NAME } "` ) ;
87
+ const output = runWranglerCommand ( `kv namespace create "${ KV_NAMESPACE } "` ) ;
57
88
58
89
try {
59
90
// 尝试从输出中提取ID
@@ -120,4 +151,4 @@ function main() {
120
151
console . log ( '设置完成!' ) ;
121
152
}
122
153
123
- main ( ) ;
154
+ main ( ) ;
0 commit comments