diff --git a/cluster/directory/base_directory.go b/cluster/directory/base_directory.go
index caba0f3ba0312d02e56f117858c89e3680a4219c..309cd4429c7256eccab556369db9b0dd264e7480 100644
--- a/cluster/directory/base_directory.go
+++ b/cluster/directory/base_directory.go
@@ -45,11 +45,10 @@ type BaseDirectory struct {
 
 // NewBaseDirectory Create BaseDirectory with URL
 func NewBaseDirectory(url *common.URL) BaseDirectory {
-	rc, _ := chain.NewRouterChain(url)
 	return BaseDirectory{
 		url:         url,
 		destroyed:   atomic.NewBool(false),
-		routerChain: rc,
+		routerChain: &chain.RouterChain{},
 	}
 }
 
diff --git a/cluster/directory/base_directory_test.go b/cluster/directory/base_directory_test.go
index 16e3c5a960912af66739bcc1c5736d44d437503e..9208c623645415e39ec53ea075f99209a3c3e9de 100644
--- a/cluster/directory/base_directory_test.go
+++ b/cluster/directory/base_directory_test.go
@@ -20,6 +20,7 @@ package directory
 import (
 	"encoding/base64"
 	"fmt"
+	chain2 "github.com/apache/dubbo-go/cluster/router/chain"
 	"testing"
 )
 
@@ -50,7 +51,9 @@ func TestBuildRouterChain(t *testing.T) {
 	regURL := url
 	regURL.AddParam(constant.INTERFACE_KEY, "mock-app")
 	directory := NewBaseDirectory(regURL)
-
+	var err error
+	directory.routerChain, err = chain2.NewRouterChain(regURL)
+	assert.Nil(t, err)
 	localIP := common.GetLocalIp()
 	rule := base64.URLEncoding.EncodeToString([]byte("true => " + " host = " + localIP))
 	routeURL := getRouteURL(rule, anyURL)