Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
BuckleScript будет помещать сгенерированные js-артефакты в lib/js/...
по умолчанию, поэтому вы должны либо написать свой импорт относительно этого, либо настроить bsb
для размещения артефактов рядом с исходными файлами. Вы делаете последнее, устанавливая "in-source": true
для данного package-spec
в bsconfig.json
. Например :
{
"package-specs": {
"module": "commonjs",
"in-source": true
}
}
См. Документацию для элемента конфигурации package-specs
.
После некоторых настроек, вот что работает для меня:
// lib/js/src/interop/Carousel.js
import React from 'react'
import Slider from 'react-slick'
const Carousel = props => {
return (
<Slider>
<div>
<h3>{props.name} 1</h3>
</div>
</Slider>
)
}
export default Carousel
// src/Carousel.re
[@bs.module "./interop/Carousel"] [@react.component]
external make: (~name: string) => React.element = "default"; // handle default export
// src/Index.re
ReactDOMRe.renderToElementWithId(<Carousel name="it works!" />, "carousel");
Поскольку Carousel.js
использует es6 и jsx, мне нужно настроить webpack для работы с ним ( es6 JSX ). И bsconfig.json
должны иметь эти настройки:
"reason": {
"react-jsx": 3
},
"package-specs": [
{
"module": "commonjs",
"in-source": false
}
]