在本地反应实例上运行的远程映像在Heroku上失败

时间:2019-03-04 23:27:08

标签: reactjs express heroku mongoose

我的本​​地应用程序,一个React,Express和Mongoose应用程序,具有博客文章功能,您可以在文本字段中输入URL或远程图像Web目标,并将其保存在目录位置/app/server/public/images/中。图片将被调整大小并显示在博客的显示页面上。

我的PostCreateWidgit.js的代码如下:

renderAddForm() {
    return (
      <Style>
        {this.componentStyles}
        <div className="form-content">
          <h3 className="form-title"><FormattedMessage id="createNewPost" /></h3>
          {
            this.props.addPostError ?
              (<div className="error-message">{this.props.addPostError}</div>) : (<i></i>)
          }
          <input type="text" placeholder={this.props.intl.messages.postTitle} className="form-field" ref="title" defaultValue="" />
          <div className="image-preview-block">
            <label>
              <input type="text" placeholder={this.props.intl.messages.image} className="form-field" ref="preview_image" />
              <a href="#" className="waves-effect waves-light btn btn-small" id="select-preview-file" onClick={this.uploadPreview}>
                <FormattedMessage id="select_file" />
              </a>
            </label>
            <form style={{ display: 'none' }} ref="uploadPreviewForm" id="uploadPreviewForm" action="/upload" method="post" encType="multipart/form-data">
              <input name="image" type="file" id="uploadPreview" />
            </form>
          </div>
          <label>
            {this.props.intl.messages.postContent}
            {this.renderTinyMce('')}
          </label>
          <a className="post-submit-button waves-effect waves-light btn btn-small" href="#" onClick={(e) => { e.preventDefault(); this.addPost(); }}>
            <FormattedMessage id="submit" /> <i className="material-icons right">send</i>
          </a>
          <a className="waves-effect waves-light btn red btn-small" href="#" onClick={(e) => { e.preventDefault(); this.toggleForm(); }}>
            <FormattedMessage id="cancel" />
          </a>
        </div>
      </Style>
    );
}

但是,当我部署到Heroku并尝试创建带有URL图像的博客文章时,出现以下错误消息:

Cannot save downloaded image: ENOENT: no such file or directory, open'/app/server/public/images/user_4567c1b46e2b715a37167c6a8a90bd44/5772c8d744198e3cdabef632136ce645.jpg

是什么导致它在我的本地生产实例上运行,但在我的Heroku应用程序上失败?我检查了Heroku上的帮助和常见问题解答,但没有看到React的任何新知识。

1 个答案:

答案 0 :(得分:0)

很有可能是由于您要保存到的目录不存在而引起的。

但是,即使您可以解决立即出现的错误,也可能不会在Heroku上看到预期的行为。这是因为its filesystem is ephemeral,因此,只要您的测功机重新启动,您所做的任何更改都会丢失。 happens frequently(每天至少一次)。

official recommendationstore uploaded files on a third-party service like Amazon S3