小编Sea*_*Lee的帖子

在 Heroku 中运行 npm run build 来为 Flask 后端反应前端应用程序提供服务

我有一个 Flask 应用程序,它也通过从/build我运行时生成的文件夹中提供文件来为 React 前端提供服务npm run build

我的目录结构:

.
|-client/
|  |build/
|    |static/
|
|-server/
|  |main.py
Run Code Online (Sandbox Code Playgroud)

为了将我的应用程序部署到 Heroku,我必须...

  1. cd 进入客户端
  2. 运行 npm run build 以生成 React 应用程序的新静态构建
  3. 将更改提交到 git

这有效,但这绝对是一种痛苦。当我们创建 PR 时,它会在 Github 中产生巨大的差异。

我想知道,是否可以npm run build在 Heroku 管道中运行?我认为 Procfile 是要走的路。我已经尝试了一些事情,比如添加

npm: cd client && npm run build
web: flask db upgrade; gunicorn wsgi:app
Run Code Online (Sandbox Code Playgroud)

无济于事。

heroku npm reactjs

5
推荐指数
1
解决办法
319
查看次数

递归搜索节点树

场景:我有一个无序的列表项列表.在每个列表项中是一个span,每个span中都有一个img标记.所以我的html结构看起来像这样.

<ul class="slider-controls">
    <li data-preview1="./images/1.1.jpeg" data-preview2="./images/1.2.jpeg"><span><img src="./images/color1.jpeg"></img></span></li>
    <li data-preview1="./images/2.1.jpeg" data-preview2="./images/2.2.jpeg"><span><img src="./images/color2.jpeg"></img></span></li>
    <li data-preview1="./images/3.1.jpeg" data-preview2="./images/3.2.jpeg"><span><img src="./images/color3.jpeg"></img></span></li>
  </ul>
Run Code Online (Sandbox Code Playgroud)

img标签只是很小的方形颜色样本,并且跨度被设计成圆形,所以你拥有的基本上是三个彩色点的颜色选择器供用户点击.

当用户点击li时,我正在使用javascript来获取数据预览,以便我可以使用该信息来更改图片.如果用户在圆圈外略微点击,这可以很好地工作.但是,如果他们在圈内点击,他们最终会点击img标签.但我需要的数据是li标签中的两个父节点!

所以我写了一个递归函数来解决这个问题.

function findUpTag(el, tag) {
  console.log(el.tagName, tag);
    if (el.tagName === tag) {
      console.log("success!", el);
      return el;
    } else {
      findUpTag(el.parentNode, tag);
    }
}
Run Code Online (Sandbox Code Playgroud)

我这样用它 findUpTag(el, "LI");

我知道我的递归搜索正在工作,因为当当前元素==="LI"时,我总是得到console.log("success")输出.

但是,单击图像标记时的返回值始终未定义!即使我的方法找到了LI!

我究竟做错了什么?

javascript recursion

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

标签 统计

heroku ×1

javascript ×1

npm ×1

reactjs ×1

recursion ×1