javascript - 即使在 if (process) {} block 中使用时也未定义未捕获的进程?

标签 javascript node.js

<分区>

所以我试图根据来源在我的 Angular 应用程序中的 API 链接之间交换,但它是一个 SSR 应用程序所以我试图考虑环境变量以及窗口位置,代码如下:

const getApiUrl = (): string => {
  if (process && process.env?.AZURE_ENV === 'development') {
    return 'devlink for SSR';
  } else if (
    window &&
    window.location.origin === 'devclient'
  ) {
    return 'devlink for frontendclient';
  } else {
    return 'link.com/';
  }
};

现在抛出的错误是:

Uncaught ReferenceError: process is not defined

我已经深入研究了“已编译”脚本,并 100% 确认它来自这段代码。

这不应该仍然有效吗?

我也尝试过一个版本,我只使用 if(process) 并得到与上面完全相同的结果。

最佳答案

可能它不存在,所以它无法评估,也许像 typeof process !== 'undefined' 那样测试它会有所帮助

如果 process 从未在任何可访问的上下文中定义,我认为它会因 UncaughtReferenceError 而失败,因为它正在尝试访问不在上下文中的内容。未定义意味着变量存在但没有设置值,这个错误表明变量不存在,这就是为什么检查它的类型可能会解决问题。

关于javascript - 即使在 if (process) {} block 中使用时也未定义未捕获的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59417298/

相关文章:

javascript - Firefox 中的默认事件对象?

javascript - 如何使用 angularjs 中的字符串从工厂内调用函数

java - JSR223 Javascript 中的回调,Oracle JRE 1.6 和 OpenJDK 1.6 之间的区别(安装在 Debian 上)

javascript - 需要播放/停止按钮 javascript 帮助

javascript - Knex 和 SQL 数据库的引号问题

javascript - 如何以编程方式使用 grunt 插件?

javascript - 我需要运行这个函数两次

javascript - 与浏览器中的全局范围相比,node.js 中的全局范围有何不同(带有具体示例)?

node.js - 将 req.body 分配给变量

node.js - npm 用于 "file-system-like"管理私有(private)依赖