Contents

Nacos错把命名空间名称当成ID导致读取不到配置

nacos错把命名空间名称当成NameSpace导致读取不到配置

这个BUG是最近公司实习遇到的,公司的项目配置文件都不能直接硬编码在 yml 文件中,需要全部移动到nacos中,并且在 bootstrap.yml 文件中也不能直接编写nacos的账户密码,需要放到 pom.xml 文件中进行管理,如下:

<profiles>
      <profile>
          <id>dev</id>
          <activation>
              <activeByDefault>true</activeByDefault>
          </activation>
          <properties>
              <profile.active>dev</profile.active>
              <password>password</password>
              <nacosNamespace>namsespace</nacosNamespace>
              <nacosAddress>127.0.0.1:8424</nacosAddress>
          </properties>
      </profile>
      <profile>
          <id>test</id>
          <properties>
              <profile.active>test</profile.active>
              <password>password</password>
              <nacosNamespace>namsespace</nacosNamespace>
              <nacosAddress>127.0.0.1:8848</nacosAddress>
          </properties>
      </profile>
      <profile>
          <id>prod</id>
          <properties>
              <profile.active>prod</profile.active>
              <password>password</password>
              <nacosNamespace>namsespace</nacosNamespace>
              <nacosAddress>127.0.0.1:8848</nacosAddress>
          </properties>
      </profile>
  </profiles>

bootstrap.yml 中要根据如下格式读取

spring:
  application:
    name: service
  profiles:
    active: @profile.active@
  cloud:
    nacos:
      config:
        username: nacos
        password: @password@
        namespace: @nacosNamespace@
        serverAddr: @nacosAddress@
        file-extension: yaml
        refresh-enabled: true

我当时还是第一次使用这种方式配置nacos,由于看之前的代码 namespace 和 nacos 中的命名空间名称是一样的,以为就是一个东西,但是没想到是之前创建命名空间时指定了 namespace 和名称一样,天真的我没有指定,namespace 是随机生成的密文,导致我填 namespace 时采用了名称,一直读取不到配置。报错如下:

https://aetherial.cn/oss/aetherial/2025/06/c6bf0abd-90be-45bf-b788-087066a614f7_image.png