小编Hor*_*don的帖子

如何在 Next.js 中根据环境变量设置基本 URL?

我在 DigitalOcean 上部署了 Strapi 后端和 Next.js 前端应用程序。在 DigitalOcean 上为前端设置了一个环境变量:API_URL = ${APP_URL}/api

我获取此变量来生成基本 url:

// constants.js
export const BASE_URL =
  process.env.NODE_ENV === "production"
    ? process.env.API_URL
    : "http://localhost:1337";
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常,应用程序也从本地主机和部署中的后端获取内容。当我尝试加载图像时,问题就出现了,该图像的路径应该是基本 url 和获取的相对路径的连接。我为此创建了一个 utilitz 函数:

// utilities.js
import { BASE_URL } from "./constants";
export const getImageURL = (relPath) => `${BASE_URL}${relPath}`;
Run Code Online (Sandbox Code Playgroud)

当我将此函数用于 html img 标签时,它会在开发环境和生产环境中加载:

<img src={getImageURL(homePage.Hero[0].Image.url)} />

但是,当我尝试在同一组件中为 div 设置背景时,基本 url 未定义,并且图像不会出现在部署的站点中(在本地主机上工作正常)。

我不知道为什么 url 生成对于代码的某些部分可以,而对于其他部分则不行。

部署的构建命令是:yarn build && next export -o _static

这是完整的组件:

import styles from "../styles/Home.module.css";
import { getImageURL } from …
Run Code Online (Sandbox Code Playgroud)

javascript environment-variables node.js digital-ocean next.js

13
推荐指数
1
解决办法
4万
查看次数

为什么 Xcode 11 beta 不能使用 C++17 的 &lt;filesystem&gt; 标头?

我需要为我的项目使用 C++ 17 的文件系统头文件。据我所知,Apple 终于在 Xcode 11 和 macOS Catalina 中提供了它。我使用的是最新的(beta 3)Xcode 11,我使用的是 macOS Catalina public beta 2,所以理论上它应该可以工作。但由于某种原因,它不是,Xcode 给出了如下错误:

'~path' is unavailable: introduced in macOS 10.15
Run Code Online (Sandbox Code Playgroud)

如果我将 Build Setting 中的 C++ 标准库从 libc++ 设置为 libstdc++,这些错误消息就会消失,我收到警告:

include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead 
Run Code Online (Sandbox Code Playgroud)

以及在各种文件中缺少 iostream 和 cstddef 的大量错误。我该怎么做才能使文件系统工作?

编辑:一个最小的代码示例

#include <filesystem>
#include <iostream>
#include <string>

bool isPathDir(std::string pathString);

int main(int argc, char *argv[])
{
    std::string pathString = "../test.jpg"; …
Run Code Online (Sandbox Code Playgroud)

c++ macos xcode c++17

11
推荐指数
1
解决办法
3402
查看次数

什么是 Killed:9 以及如何在 macOS 终端中修复?

我有一个用于机器学习项目的简单 Python 代码。我有一个相对较大的自发演讲数据库。我开始训练我的语音模型。由于它是一个巨大的数据库,我让它在一夜之间工作。早上醒来看到一个神秘的

杀死:9

线在我的终端。没有其他的。没有其他错误消息或可以使用的内容。代码运行良好约 6 小时,占整个过程的 75%,所以我真的不明白出了什么问题。

什么是 Killed:9 以及如何修复它?失去数小时的计算时间是非常令人沮丧的......

如果有问题,我正在使用 macOS Mojave 测试版。先感谢您!

python macos terminal machine-learning

7
推荐指数
1
解决办法
1万
查看次数

不同的路线,相同的组件 - 为什么组件在路线更改时不重新加载?

我有 2 个组件,一个父组件和一个子组件。相同的父组件应该加载到 2 个不同的路由上,假设路由 1 和路由 2。父组件检查使用了哪个路由并设置一个关于 (isRoute1) 的布尔值。子组件获取此布尔值作为输入并渲染 HTML。请参阅下面的框架代码。

首先假设我在浏览器中打开route1。我可以在控制台中看到“Parent init”和“Child init”文本,并且子组件呈现“ROUTE1”。一切都按预期进行。接下来,我在浏览器中导航到路线 2(直接从路线 1),并且得到了一些意想不到的结果。在控制台中,没有显示任何内容(因此 OnInits 没有触发),但是子进程呈现了“ROUTE2”。为什么 Angular 没有触发 OnInit() 函数?我怎样才能做到这一点?我认为在路线更改时,父组件将重新加载,因此子组件也会重新加载。

// Parent component's TS
isRoute1: boolean;
ngOnInit(): void {
console.log('Parent init')
this.router$.pipe(debounceTime(1), untilDestroyed(this)).subscribe(route => {
  this.isRoute1 = route.params.id === 'route1';
});}

// Parent component's HTML
<child-component [isRoute1]="isRoute1"></child-component>


// Child component's TS
@Input()
isRoute1: boolean;

ngOnInit(): void {
  console.log('Child init')
}

// Child component's HTML
<div *ngIf="isRoute1; else route2"> ROUTE1 </div>
<div #route2> ROUTE2 </div>
Run Code Online (Sandbox Code Playgroud)

angular-routing angular

2
推荐指数
1
解决办法
6495
查看次数