小编Sas*_*sha的帖子

NX - 带有 Storybook 和单独导出组件的 UI 库

我正在使用 Angular 探索 Nx(两者都比较新)并试图弄清楚如何生成一个组件库:

  • 可以运行 Storybook,并且
  • 可以一次导入一个组件,而不是将整个模块/所有组件拖到需要单个组件的应用程序中。(为了避免向我的包中添加不必要的代码/膨胀)。

所以理想的设置是这样的:

repo
 |--apps
    |--normal-app (can import just card or button, without pulling in both)
 |--libs
    |--ui (lists individually exportable components, and has a servable Storybook)
       |--.storybook
       |--card
       |--button
Run Code Online (Sandbox Code Playgroud)

遵循展示如何创建共享组件库的通用 Nx 教程以及在 Nx 中设置Storybook的指南,我生成了一个 UI 库,并设置了一个 Storybook 原理图(如果这是正确的说法)对于那个 lib 目录。

希望将我所有的共享组件放在一个库中,并将 Storybook 设置为自动生成和为每个组件提供故事——但随后能够将组件从该库单独拉入其他应用程序,而无需拉入整个庞大的用户界面图书馆。

我成功地构建了一个 UI 库和其中的两个组件。我成功地在那个库中设置了 Storybook。然后我UIModuleindex.tsUI 库中的文件(公共 API)导入了,并在我的模板中使用了两个组件之一。

但是当我构建导入 lib 的应用程序时,生产构建包含两个组件,尽管我使用了一个。这是有道理的,因为我正在导入UiModule. 然而,这并不理想。

我希望创建一个安装程序,它允许在童话建立一个lib置的组件,可以导入独立

有没有办法在不彻底改变 NX 设置的情况下做到这一点?到目前为止,我已经探索了两个主要选项。一种是将所有组件分解为自己的 UI …

angular storybook nrwl nrwl-nx angular-storybook

8
推荐指数
1
解决办法
2056
查看次数

浮点域错误

刚在我的应用程序中得到一个"FloatDomainError",消息"NaN",服务器通常会在其中描述攻击.服务器错误页面指向我这些行(嗯,第一行):

n = ((self.weight * (c.percent)/100) / c.package_weight).to_i
n.times do 
Run Code Online (Sandbox Code Playgroud)

问题似乎是.to_i,这意味着将总数转换为8.35整数,所以我可以做n次.

问题是,如果我把to_i带走,我得到一个错误告诉我,逻辑上说,浮动8.35没有方法"次".但我不明白为什么它不让我把8.35整理成一个整数.我也试过.floor,但是我得到了FloatDomainError.

关于如何解决这个问题的想法,我可以让它发挥作用?

谢谢!

ruby ruby-on-rails-3

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

Heroku自定义域SSL警告

我正在尝试为我的Heroku Deployed应用程序设置GoDaddy购买的自定义域名.我让它工作,以便www._ .com正确转发到我的herokuapp(雪松),但是1)我试图获取裸地址没有用,2)当我第一次尝试登录自定义域时,我得到一个浏览器 -这个警告的依赖版本,我绝对不想要:

"这可能不是您要寻找的网站!...您可能无法继续...在这种情况下,证书中列出的地址与您的浏览器尝试访问的网站地址不符.这样做的原因是,您的通信被正在为不同网站提供证书的攻击者拦截,这会导致不匹配.另一个可能的原因是服务器设置为多个网站返回相同的证书,包括您试图访问的那个,即使该证书对所有这些网站都无效.谷歌浏览器可以肯定地说您已到达*.herokuapp.com,但无法验证该网站是否与您打算访问的网站相同如果继续,Chrome将不会检查是否存在任何其他名称不匹配."

自定义地址前的HTTPS以红色划掉.显然,我不想用这个警告吓跑游客,但我也不想通过GoDaddy购买SSL证书.我真的不需要SSL加密.任何想法如何转发裸体网站,让它工作,而不会吓跑访客?

谢谢.我知道这是一个模糊的问题,而不是Stack Overflow的专长,但我已经在google/Heroku帮助/ GoDaddy周围捕获,并且发现了很少的最新信息,可以帮助我解决所有这些问题.

萨沙

hosting ssl heroku

7
推荐指数
2
解决办法
2670
查看次数

有条件地应用!到JavaScript中的方法

不知道如何更好地说出这个(因此,找不到以前的答案,虽然我希望之前已经得到了回答),但我对是否有办法转换代码感兴趣:

if ( this.props.mailboxFilter == 'sent' ) {
  return this.currentUser.canActOnBehalfOf( m.senderID );
} else {
  return !this.currentUser.canActOnBehalfOf( m.senderID );
}
Run Code Online (Sandbox Code Playgroud)

对于类似下面的内容(不确定如何更好地表达它):

var bangOrNot = this.props.mailboxFilter == 'sent ? '!' : '';
bangOrNot( this.currentUser.canActOnBehalfOf( m.senderID ) );
Run Code Online (Sandbox Code Playgroud)

因为,有没有办法避免扩展的if/else语法和所有重复,通过选择是否return用一声巨响来调用该行?

javascript

7
推荐指数
2
解决办法
172
查看次数

Twitter 卡片图像不适用于 Gatsby 应用程序

我正在使用 Netlify CMS(并托管在 Netlify 上)开发 Gatsby 应用程序。尝试使元数据正常工作,以便 Twitter 卡片与图像一起正确显示。

元数据通常没问题,但图像没有显示在 Twitter 验证器上,或者如果我尝试发布到 Twitter。问题显然是图像本身,这些图像托管在网站上,使用 Gatsby 和 Gatsby Image Sharp 进行渲染。

事实上,验证器似乎没有显示出根本问题。简单地说,图像不显示:

验证器

相关元数据示例:

<meta name="twitter:url" content="https://example.com/" data-react-helmet="true">
<meta name="twitter:image" content="https://example.com/static/12345/c5b20/blah.jpg" data-react-helmet="true">
<meta data-react-helmet="true" name="twitter:title" content="Site title">
<meta data-react-helmet="true" name="twitter:card" content="summary_large_image">
Run Code Online (Sandbox Code Playgroud)

我知道图像的问题,因为如果我用外部 URL 替换我的图像 URL(这是完整的图像 URL),它工作正常,显示带有图像的完整卡片。

知道是什么原因造成的吗?我正在缩小图像的大小,以便它可以快速加载,而且它似乎可以直接加载(例如)。(我的意思是,那张图片有什么奇怪的地方吗?)

注意:在此问题的先前版本中,我引用了 Cloudinary 和 Uploadcare,但此后在一个分支中删除了这两个以简化问题。(他们似乎已经从我使用的起始应用不必要的遗物。)现在,您可以看到一个示例页面该分支在这里和相关图像中的twitter:image标签在这里。我使用 React Helmet(和 Gatsby React Helmet)将此预处理/缩小的图像提供到标题中,并在我的 GraphQL 调用中使用以下代码以该特定的较小格式获取与博客文章关联的图像:

    featuredimage {
      childImageSharp {
        fixed(width: 480, quality: 75) {
          src
        }
    }
Run Code Online (Sandbox Code Playgroud)

第二个注意事项/想法:我是否应该担心生产中的页面似乎在每次重新加载时都重新渲染?SSR …

twitter gatsby gatsby-image

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

Constantize引发未初始化的常量错误

我正在研究这个非常棘手的问题,并决定我可以通过这样做动态创建一个继承自StandardError的类:

something = "JustForBelow"
error_class = "#{something}Error".constantize
error_class = StandardError.new
Run Code Online (Sandbox Code Playgroud)

但是我得到了一个非常奇怪的错误(在我看来),这是:

Uninitialized constant JustForBelowError
Run Code Online (Sandbox Code Playgroud)

我不是在那里初始化它吗?

(基本上)当我尝试这个时出现相同的错误:

StandardError.const_get "#{something}Error"
# => NameError: uninitialized constant StandardError::JustForBelowClass
Run Code Online (Sandbox Code Playgroud)

这感觉很奇怪,因为a)这些都是超级随机的名字; 没有任何冲突,并且b)我很确定我在之前的第一个例子中使用了constantize.有什么想法会出错吗?

ruby metaprogramming ruby-on-rails

6
推荐指数
2
解决办法
3779
查看次数

TweenMax将无法正确初始化:"Uncaught无法补间空目标."

在我的应用程序中,我正在尝试使用GSAPTweenMax/TimelineMax库来动画更改,但我在代码中遇到了早期错误.简化(这是使用ES6的React/Redux应用程序):

import TimelineMax from 'gsap';
import TweenMax from 'gsap';
import GSAP from 'gsap-react-plugin';
import ReactDOM from 'react-dom';

someFunction() {
    var mailboxDropdown = ReactDOM.findDOMNode( this.refs.mailboxDropdown );
    // TweenLite.to(this, 0.1, { "y-offset": '-50px', 'opacity' : 0 });
    console.log(mailboxDropdown)
    var tl = new TimelineMax();
    console.log('here');
    tl.to(mailboxDropdown, 0.4, { "y-offset": '-50px' }, 'slideUp' )
    tl.to(mailboxDropdown, 1, { opacity: 0 }, 'slideUp-=.5');
};
Run Code Online (Sandbox Code Playgroud)

这些错误很奇怪.首先,如果我没有用一个对象初始化TimelineMax - 类似于new TimelineMax({repeat: 1})- (虽然文档说它的默认构造函数是arg null),它甚至在击中之前就会抛出一个错误console.log('here').

未捕获无法补间空目标.

如果我这样做有一个对象作为前一句初始化它,我打了一个错误,当我尝试调用tl.to.特别: …

javascript tweenmax ecmascript-6 reactjs gsap

6
推荐指数
1
解决办法
7089
查看次数

Angular Test 错误——无法绑定到“items”,因为它不是“app-dropdown”的已知属性

只想说,我认识到有很多与“无法绑定到 X,因为它不是 Y 的已知属性”错误相关的 SO 帖子。我查看了大量答案,并找到了许多解决特定问题的答案,但我无法将其转换为我的案例,实际上我认为这很笼统,并且与对我应该如何解决我的用例。

我正在创建一个 Angular (7) 应用程序,我已将其分为componentsroutes。该components是模块化件(下拉菜单,情态动词,按钮,等等),这些路由的应用程序单独的页面。这个术语有点复杂,因为两者在技术上都是 Angular 组件。换句话说,结构(内src/)看起来像这样:

- app
  - components
    - dropdown
      - dropdown.component.ts
      - dropdown.component.html
      - dropdown.component.scss
      - dropdown.component.spec.ts
  - routes
    - library
      - library.component.ts
      - library.component.html
      - library.component.scss
      - library.component.spec.ts
  ...
Run Code Online (Sandbox Code Playgroud)

所以我有一个 Library 路由,它只是一个 Angular 组件,它导入一个 Dropdown 组件,如下所示:

import { Component, OnInit } from '@angular/core';

import { DropdownComponent } from '../../components/dropdown/dropdown.component';

@Component({
  selector: 'app-library',
  templateUrl: './library.component.html',
  styleUrls: ['./library.component.scss']
})
export class LibraryComponent implements OnInit …
Run Code Online (Sandbox Code Playgroud)

angular angular-test

6
推荐指数
1
解决办法
7033
查看次数

水豚测试中的Sendgrid错误

我正在尝试将测试追溯应用到一个非常复杂的应用程序(再也不会).我内置了Sendgrid功能,可以在用户注册时向他们发送电子邮件.因此,当我尝试测试注册页面时,它会尝试向我的example@example.net发送一条消息,我收到以下错误:

Net::SMTPFatalError:
550 Cannot receive from specified address <my app's email>: Unauthenticated senders not allowed
Run Code Online (Sandbox Code Playgroud)

但是,我不清楚这是否是我正在进行测试的问题(我正在遗漏的东西 - 我是新的),或者是一个更深层次的问题.自从我从GMail切换到Sendgrid后,当我在服务器上使用它时,我的应用程序应该发送的电子邮件遇到错误,但不是在线.我认为Sendgrid是一个专门的基于Web应用程序的电子邮件服务,但现在我猜我在配置文件中做错了.我设置我的配置的方式是这样的:

初始化/ mail.rb

# SendGrid Settings
ActionMailer::Base.smtp_settings = {
  :address        => 'smtp.sendgrid.net',
  :port           => '587',
  :authentication => :plain,
  :user_name      => ENV['SENDGRID_USERNAME'],
  :password       => ENV['SENDGRID_PASSWORD'],
  :domain         => 'heroku.com'
}
ActionMailer::Base.delivery_method = :smtp
Run Code Online (Sandbox Code Playgroud)

我的environment.rb文件中没有任何内容.这个问题表明我可能应该将这些设置切换到environment.rb文件中,但是(显然,我不太了解配置文件),我想知道我是否应该为development.rb设置单独的设置,测试.rb等(另外,我试过那个开关,并没有改变错误).此外,如果有一个变通方法可以让capybara/rspec在测试期间忽略电子邮件请求(或以某种方式处理它是一个虚假的电子邮件地址并测试电子邮件而不尝试发送电子邮件).

谢谢!

email testing rspec ruby-on-rails ruby-on-rails-3

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

思考Sphinx - 在配置文件中找不到索引

尝试使用Thinking Sphinx进行搜索.通过自制软件安装TS和MySQL 跟随此Railscast(虽然我在我的应用程序中使用pg,显然需要),将这些行添加到我的gemfile:

gem 'mysql2'
gem 'thinking-sphinx'
Run Code Online (Sandbox Code Playgroud)

并将以下内容放在我的模型中,低于其他所有内容

post.rb

class Post < ActiveRecord::Base
    #...

    define_index do 
      indexes content
      indexes :name
    end
end
Run Code Online (Sandbox Code Playgroud)

然后我进入终端并尝试rake ts:index,但是我收到此错误:

 using config file '/Users/<personal>/rails_projects/<personal>/config/development.sphinx.conf'...
    FATAL: no indexes found in config file '/Users/<personal>/rails_projects/<personal>/config/development.sphinx.conf'
Run Code Online (Sandbox Code Playgroud)

捕捞 围绕 在互联网上,并没有发现任何相当回答了这个.我试过运行rake ts:configure(不抱怨)然后rake ts:index,但它不起作用.

一些背景:我刚刚更改了我的终端shell(使用zsh),这会产生各种奇怪的意外变化.我不得不重新安装bundler,然后重新捆绑安装所有我的宝石,然后独立gem安装rake.然后我捆绑更新为好的措施.现在rake似乎工作,但我仍然得到错误.

错误抱怨的配置文件:

indexer
{
}

searchd
{
  listen = 127.0.0.1:9306:mysql41
  log = /Users/<personal>/rails_projects/<personal>/log/development.searchd.log
  query_log = /Users/<personal>/rails_projects/<personal>/log/development.searchd.query.log
  pid_file = /Users/<personal>/rails_projects/<personal>/log/development.sphinx.pid
  workers = threads
  binlog_path = /Users/<personal>/rails_projects/<personal>/tmp/binlog/development
}
Run Code Online (Sandbox Code Playgroud)

任何想法发生了什么/答案可能是什么代码?

有趣的更新 - 我按照这个谷歌集团的问答进入我的rails控制台并输入"Post.sphinx_indexes.length",但我得到了这个非常不同的错误作为回报.看起来我的模型不知何故无法访问宝石?

NoMethodError: undefined method `define_index' …
Run Code Online (Sandbox Code Playgroud)

rake ruby-on-rails thinking-sphinx ruby-on-rails-3

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