【问题标题】:js: TypeError: Cannot read property 'replace' of undefined usingjs:TypeError:无法读取未定义的属性“替换”使用
【发布时间】:2020-10-30 06:55:31
【问题描述】:

我想用空字符串替换/\r?\n|\r/g,但出现类型错误“无法读取未定义的属性'replace'”。

export function getCupsCredentials() {
    var vcap_services = process.env.VCAP_SERVICES;
    var vcap_servces_as_single_line = vcap_services.replace(/\r?\n|\r/g, " ");
    var vcap_servces_as_json = JSON.parse(vcap_servces_as_single_line)
    var vcap_servces_user_provided = vcap_servces_as_json['user-provided']
    var cups_credentials = vcap_servces_user_provided[0].credentials;
    return cups_credentials;
}

我在使用 .replace 时收到以下错误消息

TypeError: Cannot read property 'replace' of undefined
at getCupsCredentials (/app/ui/dist/webpack:/src/utils/VcapUtils.js:4:50)
at Object.defineProperty.value (/app/ui/dist/webpack:/src/utils/IAMUtils.js:5:17)
at __webpack_require__ (/app/ui/dist/webpack:/webpack/bootstrap 713b700ecf31:19:1)
at Object.defineProperty.value (/app/ui/dist/webpack:/src/api/middleware/filters/authFilter.js:1:1)
at __webpack_require__ (/app/ui/dist/webpack:/webpack/bootstrap 713b700ece831:19:1)
at Object.<anonymous> (/app/ui/dist/webpack:/src/api/middleware/pre.js:1:1)
at __webpack_require__ (/app/ui/dist/webpack:/webpack/bootstrap 713b70031:19:1)
at Object.defineProperty.value (/app/ui/dist/webpack:/src/api/middleware/index.js:1:1)
at __webpack_require__ (/app/ui/dist/webpack:/webpack/bootstrap 713b700ececf31:19:1)
at Object.canUseDOM (/app/ui/dist/webpack:/src/server.js:4:1)
Starting Conductor UI
using Conductor API server from 'http://chand-wf-nfce-server.cloud.pcftest.com/api'
 
/app/ui/dist/webpack:/src/utils/VcapUtils.js:4
var vcap_servces_as_single_line = vcap_services.replace(/\r?\n|\r/g, " ");

【问题讨论】:

  • 试试console.logging vcap_services,看来,没有任何价值

标签: javascript node.js reactjs webpack


【解决方案1】:

如果这些值是从远程服务器获取的,则可能是您尝试在将数据分配给变量之前替换字符。尝试使用await 函数或.then() 并替换为var vcap_servces_as_single_line = vcap_services?.replace(/\r?\n|\r/g, " ");

这样,如果你有一个未定义的值,代码就不会对你大喊大叫。

【讨论】:

    【解决方案2】:

    最可能的原因是您的process.env.VCAP_SERVICES 未正确初始化,它正在使用undefined 初始化您的vcap_services。由于替换方法不适用于undefined,因此出现错误。

    尝试通过三元运算符检查vcap_services是否为空

    export function getCupsCredentials() {
      var vcap_services = process.env.VCAP_SERVICES;
      var vcap_servces_as_single_line = vcap_services
        ? vcap_services.replace(/\r?\n|\r/g, " ")
        : "vcap_servisec is empty";
      console.log(vcap_services);
      /*
        var vcap_servces_as_json = JSON.parse(vcap_servces_as_single_line)
        var vcap_servces_user_provided = vcap_servces_as_json['user-provided']
        var cups_credentials = vcap_servces_user_provided[0].credentials;
        return cups_credentials;
        */
    }
    

    【讨论】:

      猜你喜欢
      • 2021-08-30
      • 2020-09-25
      • 2021-10-26
      • 2015-05-29
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      相关资源
      最近更新 更多