我想知道是否有可能,以及如何检测正在运行的代码是否是build
提供的gatsby的gatsby serve
输出。当我启动gatsby serve
时,浏览器将在localhost:9000/
上打开,我需要根据某种环境变量或其他方式更改代码。我正在寻找最惯用的方法,如果可能的话,不要像读取window.location
对象这样的骇客。在此先感谢
[当您gatsby build
时,盖茨比在项目的public
文件夹中创建项目的生产就绪版本。这意味着您可以使用public
文件夹并将代码部署到http服务器。您不能从此代码“检测”任何特殊属性。 gatsby build
是gatsby build
。
我看到的唯一方法是在您gatsby serve
时检测是否使用标准:9000
端口号gatsby serve
。参见Mozilla docs。
您可以从Gatsby实现的范围/路由器API中获得location props。我不确定它是否实现与Mozilla文档中提到的方法相同的方法。您应该尝试一下。
const index = ({ location }) => {
console.log(location.port);
// ...
}
作为替代,您可以按照此answer中的描述来解析URL字符串。