Error cannot read property style of undefined

Ответили на вопрос 3 человека. Оцените лучшие ответы! И подпишитесь на вопрос, чтобы узнавать о появлении новых ответов.

Здравствуйте.

Подскажите, пожалуйста, в чём проблема?


Uncaught TypeError: Cannot read property ‘style’ of undefined

// slider style 

var slideIndex = 1;
showSlides(slideIndex);

function plusSlides(n) {
  showSlides(slideIndex += n);
}

function currentSlide(n) {
  showSlides(slideIndex = n);
}

function showSlides(n) {
  var i;
  var slides = document.getElementsByClassName("mySlides");
  var dots = document.getElementsByClassName("dot");
  if (n > slides.length) {slideIndex = 1}    
  if (n < 1) {slideIndex = slides.length}
  for (i = 0; i < slides.length; i++) {
      slides[i].style.display = "none";  
  }
  for (i = 0; i < dots.length; i++) {
      dots[i].className = dots[i].className.replace(" active", "");
  }
  // if (true == slides) {
    slides[slideIndex-1].style.display = "block";  
    dots[slideIndex-1].className += " active";
  // }
  // else{
  //   console.log("hellllllloo!")
  // }
}
// slider style end

<div class="slideshow-container">
  <div class="mySlides fade">
    	<img src="img/slider/304669-alexfas01.jpg">
    	<h2 class="text">
    		<span>Foto Club</span>
    		<span class="free">ԱՆՎՃԱՐ</span>
    		<span>ֆՈՏՈ</span>
    		<span>Նկարահանում</span>
    		<a href="../registration.php">Գրանցվել</a>
    	</h2>
  </div>
</div>

Содержание

  1. Style is undefined error
  2. Cannot read properties of undefined (reading ‘style’) in JS #
  3. Make sure to provide the correct class name to getElementsByClassName #
  4. Place the JS script tag at the bottom of the body tag #
  5. Conclusion #
  6. Топ-10 ошибок из 1000+ JavaScript-проектов и рекомендации по их устранению
  7. Методика анализа
  8. 1. Uncaught TypeError: Cannot read property
  9. 2. TypeError: ‘undefined’ is not an object (evaluating…
  10. 3. TypeError: null is not an object (evaluating
  11. 4. (unknown): Script error
  12. jQuery DataTables: Common JavaScript console errors
  13. TypeError: $(…).DataTable is not a function
  14. Cause
  15. Solution
  16. TypeError: aData is undefined
  17. Cause
  18. Solution
  19. TypeError: f is undefined
  20. TypeError: Cannot read property ‘length’ of undefined
  21. TypeError: headerCells[i] is undefined
  22. TypeError: n[m] is undefined
  23. Cause
  24. Solution
  25. TypeError: Cannot read property ‘style’ of undefined
  26. TypeError: Cannot set property ‘nTf’ of undefined
  27. Cause
  28. Solution
  29. TypeError: Cannot read property ‘mData’ of undefined
  30. TypeError: col is undefined
  31. Cause
  32. Solution
  33. You May Also Like
  34. Comments

Style is undefined error

Reading time В· 3 min

Cannot read properties of undefined (reading ‘style’) in JS #

There are 2 main reasons the «Cannot read properties of undefined (reading ‘style’)» error occurs:

  1. Accessing the style property on a DOM element that doesn’t exist, e.g. array index out of bounds.
  2. Inserting the JS script tag above the HTML, where the DOM elements are declared.

Here is an example of how the error occurs.

We accessed an empty array at index 0 and got an undefined value back.

Then we attempted to access the style property on an undefined value which caused the error.

The error most commonly occurs when using the getElementsByClassName method with a class name that is not present in the DOM.

Make sure to provide the correct class name to getElementsByClassName #

To solve the «Cannot read properties of undefined (reading ‘style’)» error, make sure that the value on which you’re accessing the style property is a DOM element.

In the code sample, we passed a class name that doesn’t exist to the getElementsByClassName method.

The other common reason the error occurs is placing the JS script tag above the code that declares the DOM elements.

Place the JS script tag at the bottom of the body tag #

To solve the «Cannot read properties of undefined (reading ‘style’)» error, make sure that the JS script tag is placed at the bottom of the body, after the HTML elements have been declared.

Therefore the div element will not be accessible in the index.js file.

You have to place the JS script tag at the bottom of the body tag, after declaring the HTML elements.

Now you can access the div element in the index.js file.

HTML code is parsed from top to bottom, so the script tag has to be placed at the bottom of the body tag, after all of the DOM elements it needs to access.

Conclusion #

The «Cannot read properties of undefined (reading ‘style’)» error occurs when:

Источник

Топ-10 ошибок из 1000+ JavaScript-проектов и рекомендации по их устранению

В компании Rollbar, которая занимается созданием инструментов для работы с ошибками в программах, решили проанализировать базу из более чем 1000 проектов на JavaScript и найти в них ошибки, которые встречаются чаще всего. В результате они сформировали список из 10 наиболее часто встречающихся ошибок, проанализировали причины их появления и рассказали о том, как их исправлять и избегать. Они полагают, что знакомство с этими ошибками поможет JS-разработчикам писать более качественный код.

Методика анализа

В наши дни данные — это всё, поэтому мы нашли, проанализировали и проранжировали ошибки, которые чаще всего встречаются в JavaScript-проектах. А именно, были собраны сведения об ошибках по каждому проекту, после чего было подсчитано количество ошибок каждого вида. Ошибки группировались по их контрольной сумме, методику вычисления которой можно найти здесь. При таком подходе, если, например, в одном проекте обнаружена некая ошибка, которая после этого найдена где-то ещё, такие ошибки группируют. Это позволяет, после анализа всех участвующих в исследовании проектов, получить краткую сводку по ошибкам, а не нечто вроде огромного лог-файла, с которым неудобно работать.

В ходе исследования особое внимание уделялось наиболее часто встречающимся ошибкам. Для того чтобы такие ошибки отобрать, их ранжировали по количеству проектов разных компаний, в которых они встречаются. Если бы в этот рейтинг входило лишь общее число появлений некоей ошибки, то ошибки, характерные для какого-нибудь очень крупного проекта, но редко встречающиеся в других проектах, исказили бы результаты.

Вот десять ошибок, которые были отобраны по результатам исследования. Они отсортированы по количеству проектов, в которых они встречаются.

Ошибки, которые встречаются в JS-проектах чаще всего

Названия ошибок представляют собой сокращённый вариант сообщения об ошибке, которое выдаёт система. Опора на системные сообщения позволяет легко идентифицировать ошибки при их возникновении. Сейчас мы проанализируем каждую из них, расскажем о том, что их вызывает, и о том, как с ними бороться.

1. Uncaught TypeError: Cannot read property

Если вы пишете программы на JavaScript, то вы, вероятно, встречались с этой ошибкой гораздо чаще, чем вам того хотелось бы. Подобная ошибка возникает, например, в Google Chrome при попытке прочитать свойство или вызвать метод неопределённой переменной, то есть той, которая имеет значение undefined . Увидеть эту ошибку в действии можно с помощью консоли инструментов разработчика Chrome.

Ошибка Cannot read property

Эта ошибка может возникнуть по многим причинам, но чаще всего её вызывает неправильная инициализация состояния при рендеринге элемента пользовательского интерфейса. Взглянем на пример того, как подобное может произойти в реальном приложении. Тут мы используем React, но та же ошибка инициализации характерна для Angular, Vue и для любых других фреймворков.

Тут надо обратить внимание на две важные вещи:

  1. В самом начале состояние компонента (то есть — this.state ) представлено значением undefined .
  2. При асинхронной загрузке данных компонент будет выведен как минимум один раз до того, как данные будут загружены, вне зависимости от того, будет ли это выполнено в componentWillMount или в componentDidMount . Когда элемент Quiz выводится в первый раз, в this.state.items записано undefined . Это, в свою очередь, означает, что itemList получает элементы, которые так же представлены значением undefined . Как результат, мы видим в консоли следующую ошибку: «Uncaught TypeError: Cannot read property ‘map’ of undefined» .

Эту ошибку исправить несложно. Проще всего инициализировать состояние в конструкторе подходящими значениями по умолчанию.

Код вашего приложения будет выглядеть иначе, но мы надеемся, что теперь вы знаете, как исправить эту ошибку в своём проекте и как избежать её появления. Если то, о чём шла речь, вам не подходит — возможно, вам поможет разбор следующих ошибок.

2. TypeError: ‘undefined’ is not an object (evaluating…

Эта ошибка возникает в браузере Safari при попытке прочесть свойство или вызвать метод неопределённого объекта. Взглянуть на эту ошибку можно с помощью консоли инструментов разработчика Safari. На самом деле, тут перед нами та же самая проблема, которую мы разбирали выше для Chrome, но в Safari она приводит к другому сообщению об ошибке.

Ошибка ‘undefined’ is not an object

Исправлять эту ошибку надо так же, как в предыдущем примере.

3. TypeError: null is not an object (evaluating

Эта ошибка возникает в Safari при попытке обратиться к методу или свойству переменной, представленной значением null . Вот как это выглядит в консоли разработчика Safari.

Ошибка TypeError: null is not an object

Напомним, что в JavaScript null и undefined — это не одно и то же, именно поэтому мы видим разные сообщения об ошибках. Смысл значения undefined , записанного в переменную, говорит о том, что переменной не назначено никакого значения, а null указывает на пустое значение. Для того чтобы убедиться в том, что null не равно undefined , можно сравнить их с использованием оператора строгого равенства:

Сравнение undefined и null с помощью операторов нестрогого и строгого равенства

Одна из причин возникновения подобной ошибки в реальных приложениях заключается в попытке использования элемента DOM в JavaScript до загрузки элемента. Происходит это из-за того, что DOM API возвращает null для ссылок на пустые объекты.

Любой JS-код, который работает с элементами DOM, должен выполняться после создания элементов DOM. Интерпретация JS-кода производится сверху вниз по мере появления его в HTML-документе. Поэтому если тег

4. (unknown): Script error

Эта ошибка возникает в том случае, когда неперехваченная ошибка JavaScript пересекает границы доменов при нарушении политики кросс-доменных ограничений. Например, если ваш JS-код размещён на CDN-ресурсе, в сообщении о любой неперехваченной ошибке (то есть, об ошибке, которая не перехвачена в блоке try-catch и дошла до обработчика window.onerror ) будет указано Script error , а не полезная для целей устранения этой ошибки информация. Это — один из браузерных механизмов безопасности, направленный на предотвращение передачи данных между фрагментами кода, источниками которого являются разные домены, и которым в обычных условиях запрещено обмениваться информацией.

Вот последовательность действий, которая поможет увидеть эту ошибку.

1. Отправка заголовка Access-Control-Allow-Origin .

Установка заголовка Access-Control-Allow-Origin в состояние * указывает на то, что к ресурсу можно получить доступ из любого домена.

Знак звёздочки можно, при необходимости, заменить на конкретный домен, например так : Access-Control-Allow-Origin: www.example.com . Однако поддержка нескольких доменов — дело довольно сложное. Такая поддержка может не стоить затраченных на её обеспечение усилий, если вы используете CDN, из-за возможного возникновения проблем с кэшированием. Подробности об этом можно посмотреть здесь.

Вот примеры установки этого заголовка в различных окружениях.

В папке, из которой будут загружаться ваши JavaScript-файлы, создайте файл .htaccess со следующим содержимым:

Добавьте директиву add_header к блоку location , который отвечает за обслуживание ваших JS-файлов:

Добавьте следующую настройку к параметрам системы, ответственной за поддержку JS-файлов:

2. Установите crossorigin=»anonymous» в теге

Источник

jQuery DataTables: Common JavaScript console errors

jQuery DataTables displays a message when there is Ajax error or invalid JSON response. However most of the time you will only see a JavaScript error in your browser console if something is wrong. I have compiled a list of the most common JavaScript errors appearing in the console, their cause and possible solutions.

TypeError: $(…).DataTable is not a function

Cause

  • jQuery DataTables library is missing.
  • jQuery library is loaded after jQuery DataTables.
  • Multiple versions of jQuery library is loaded.

Solution

Include only one version of jQuery library version 1.7 or newer before jQuery DataTables.

TypeError: aData is undefined

Cause

jQuery DataTables cannot find the data in the response to the Ajax request.

By default jQuery DataTables expects the data to be in one of the formats shown below. Error occurs because data is returned in the format other than default.

Solution

Use default format or use ajax.dataSrc option to define data property containing table data in Ajax response ( data by default).

See Data array location for more information.

TypeError: f is undefined

See the following errors for a possible cause and solution:

TypeError: Cannot read property ‘length’ of undefined

See the following errors for a possible cause and solution:

TypeError: n[m] is undefined

Cause

  • Number of th elements in the table header or footer differs from number of columns in the table body or defined using columns option.
  • Attribute colspan is used for th element in the table header.
  • Incorrect column index specified in columnDefs.targets option.

Solution

  • Make sure that number of th elements in the table header or footer matches number of columns defined in the columns option.
  • If you use colspan attribute in the table header, make sure you have at least two header rows and one unique th element for each column. See Complex header for more information.
  • If you use columnDefs.targets option, make sure that zero-based column index refers to existing columns.

TypeError: Cannot read property ‘style’ of undefined

See the following errors for a possible cause and solution:

TypeError: Cannot set property ‘nTf’ of undefined

Cause

  • Number of th elements in the table footer differs from number of th elements in the table header.

Solution

  • Make sure that number of th elements in the table footer matches number of th elements in the table header.

TypeError: Cannot read property ‘mData’ of undefined

TypeError: col is undefined

Cause

  • Missing table header.
  • Number of td elements in the table body differs from number of th elements in the table header.

Solution

  • Make sure that your table has a header. See Requirements for more information.
  • Make sure that number of td elements in the table footer matches number of th elements in the table header.

You May Also Like

Michael Ryvkin

Freelance web developer based in Perkasie, Bucks County, PA. I design and develop custom websites and web applications, perform website maintenance and provide technical support for small and medium-sized businesses.

Contact me for a free quote or consultation on your project.

thanks, very useful. solved TypeError: $(…).DataTable is not a function error for me. I spent hours looking for the reason. then your concise comment (loading more than one jquery library) solved it. I was loading two versions in two different places in my html. thanks,

Thank you, Mohamed!

I got this error.TypeError: aLayout[i][j] is undefined.
Please Help me to solve this issue. And another error which i faced while generating pdf that was colspan in pdf. I can’t set colspan and rowspan in export pdf using datatables.

@Michael Ryvkin sir Please Guide me. I am waiting for your reply.

DataTables only support colspan and rowspan attributes if there is at least one TH cell which is unique to the column, please see this example. I suspect you get this error because you don’t have one unique TH per column. If you could create an example on jsFiddle demonstrating your problem or share your HTML markup, I would be able to provide more specific response.

Michael Ryvkin Sir, Thank you for your guidance. But the problem was that when I tried to generate a PDF in that case rowspan and colspan is not working. Sir please see this example http://jsfiddle.net/genxcoders/kpbsn812/29/. Sir, I am waiting for your guidance. Thank you !

Michael Ryvkin sir. In this code i got this error.TypeError: aLayout[i][j] is undefined. https://jsfiddle.net/Kalyani_Genxcoders/6apjy28w/8/ . I want to export this table in Excel and PDF using datatables. Please Guide me. Thank you In advance.

Thanks a lot. I resolved “col is undefined” error.

TypeError: widths[i] is undefined.
@Michael Ryvkin sir Please Guide me. I got this error while exporting the pdf. Thanks in advance.

You litteraly saved my life. thanksssss

Источник

Sometimes, we get the ‘Cannot read property style of undefined’ when we try to add a table with jQuery DataTables.

In this article, we’ll look at ‘Cannot read property style of undefined’ when we try to add a table with jQuery DataTables.

th Element Mismatch

One cause of this error is that the number of th elements in the table header or footer doesn’t match the columns defined in the columns option.

Therefore, we should make sure that both of them match.

colspan Mismatch

If we have colspan in the table header, we should make sure that at least 2 header rows and one unique th element for each column.

Use Zero-Based Colum Index to Refer to Existing Columsn with adding the columnDefs.targets Property

If we add the columnDefs.targets property, we should make sure that the array has indexes that aren’t out of bounds when counting from 0.

For instance, if we have the following HTML:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous"></script>
<script src='//cdn.datatables.net/1.10.24/js/jquery.dataTables.min.js'></script>
<link rel='stylesheet' href='//cdn.datatables.net/1.10.24/css/jquery.dataTables.min.css'>
<table>

</table>

Then we can write the following JavaScript code:

const dataSet = [
  ["Tiger Nixon", "System Architect", "Edinburgh", "5421", "2011/04/25", "$320,800"],
  ["Garrett Winters", "Accountant", "Tokyo", "8422", "2011/07/25", "$170,750"],
  ["Ashton Cox", "Junior Technical Author", "San Francisco", "1562", "2009/01/12", "$86,000"],
  ["Cedric Kelly", "Senior Javascript Developer", "Edinburgh", "6224", "2012/03/29", "$433,060"],
  ["Airi Satou", "Accountant", "Tokyo", "5407", "2008/11/28", "$162,700"],
  ["Brielle Williamson", "Integration Specialist", "New York", "4804", "2012/12/02", "$372,000"],
  ["Herrod Chandler", "Sales Assistant", "San Francisco", "9608", "2012/08/06", "$137,500"],
  ["Rhona Davidson", "Integration Specialist", "Tokyo", "6200", "2010/10/14", "$327,900"],
  ["Colleen Hurst", "Javascript Developer", "San Francisco", "2360", "2009/09/15", "$205,500"],
  ["Sonya Frost", "Software Engineer", "Edinburgh", "1667", "2008/12/13", "$103,600"],
  ["Jena Gaines", "Office Manager", "London", "3814", "2008/12/19", "$90,560"],
  ["Quinn Flynn", "Support Lead", "Edinburgh", "9497", "2013/03/03", "$342,000"],
  ["Charde Marshall", "Regional Director", "San Francisco", "6741", "2008/10/16", "$470,600"],
  ["Haley Kennedy", "Senior Marketing Designer", "London", "3597", "2012/12/18", "$313,500"],
  ["Tatyana Fitzpatrick", "Regional Director", "London", "1965", "2010/03/17", "$385,750"],
  ["Michael Silva", "Marketing Designer", "London", "1581", "2012/11/27", "$198,500"],
]

jQuery('table').DataTable({
  data: dataSet,
  columns: [{
      title: "Name"
    },
    {
      title: "Position"
    },
    {
      title: "Office"
    },
    {
      title: "Extn."
    },
    {
      title: "Start date"
    },
    {
      title: "Salary"
    }
  ],
  columnDefs: [{
    orderable: false,
    targets: [0, 1, 2]
  }]
});

to add the columnDefs.targets property.

0 is the first column, 1 is the 2nd one, and 2 is the 3rd one.

We set orderable to false so we disabled reordering items for those columns.

Conclusion

To fix the ‘Cannot read property style of undefined’ when we try to add a table with jQuery DataTables, we should make sure the th elements and colspan matches the number of columns.

Also, we should make sure the columnDefs.targets property should match the indexes of the columns in the table.

@asdf23

capelski, cmaycumber, raulshma, andrius444, shwetankshrey, katze, Armando08, hcphoon01, johannbuscail, BlameFelix, and 10 more reacted with thumbs up emoji

@capelski

Running fine on Android though. The error is raised in web only

@aioia

TypeError: Cannot read property ‘style’ of undefined

node_modules/react-native-pages/src/components/indicator/index.js:9
   6 | 
   7 | export default class Indicator extends PureComponent {
   8 |   static propTypes = {
>  9 |     style: ViewPropTypes.style,
  10 | 
  11 |     pages: PropTypes.number.isRequired,
  12 |     progress: PropTypes.instanceOf(Animated.Value).isRequired,
npm install expo-cli@3.28.3 --global
expo init project
npm i -S react-native-snap-carousel
npm i -S @types/react-native-snap-carousel

and useing react-native-snap-carousel then error this. (web)

@richardkarlsen

@yacaeh

Similar error for me on web only. Works fine on android device.
TypeError: Cannot read property ‘style’ of undefined

Module.../../../react-native-snap-carousel/src/carousel/Carousel.js
> 46 | containerCustomStyle: ViewPropTypes ? ViewPropTypes.style : View.propTypes.style,

@shwetankshrey

@Lovej4972

the-mysterious-kid and Parmita28 reacted with thumbs up emoji
hcphoon01, leon-do, malenamingrone, sharkis, jasonwei0224, johannbuscail, zsoro2, BlameFelix, anniedurand, ian-mackenzie, and 56 more reacted with thumbs down emoji
3braintechnologies and l2aelba reacted with laugh emoji
johannbuscail, Oscar-Raygoza, MarvinMakalintal, JesusMdzS, and NaturmaaDev reacted with confused emoji

@capelski

Run the Application on mobile not desktop web

Sure, @Lovej4972! No problem when running on mobile. We’d like to get it working on desktop too though, since many of us use Expo, and we’d like to run the app as a web app from the same codebase.

rizikolik, katze, larsdood, karzQ, Kinjeiro, sidorovsaleksa, leon-do, malenamingrone, zsoro2, BlameFelix, and 17 more reacted with thumbs up emoji

@hcphoon01

I get the same issue running snap carousel v3.9.1 on web

@sam-uraii

I am having the same error plz help!!!! Somebody!!

@leon-do

Same problem. looking for a solution

@capelski

I’ve created a PR that fixes the issue on browsers: #820. I’ve never used React propTypes, so I’m not sure what consequences the fix might have. If anyone with experience on propTypes has a better solution I’ll be happy to apply the changes. Cheers!

@BlameFelix

This resolved the error for me. The carousel still doesn’t work on web, but I think web is not supported by this libary anyway.

@capelski

@BlameFelix Give a try at #820. I’m getting the carousel working on Google Chrome. What error do you get?

@BlameFelix

Interessting. I haven’t really looked into what exactly is wrong. So far it just didn’t render the page. I was assuming that the libary just doesn’t support web, as it says at reactnative.directory. I will check into it tomorrow

@BlameFelix

@capelski all right I got it to work. Imo the underlying problem comes from react native web. This fixed it for me. Your PR also works but I think the fix at react native web is cleaner

@capelski

@BlameFelix I don’t understand how react-native-web is involved here 🤔 If you check the package.json in this repo, it is not registered as a dependency.

Leaving that aside, the solution provided in necolas/react-native-web#1537 (comment) is a workaround, not a fix. The clean solution would be to modify the react-native-web source code, not adding a postinstall script in every package that uses react-native-web.

My PR provides the same mock as the solution you mention, but it makes it part of the react-native-snap-carousel code. What makes you feel the solution in react-native-web is cleaner?

@BlameFelix

From my perspective the problem is this. And this library was made for rn, not rn web. That’s why it didn’t work before.
The rn web developers don’t want to support ViewPropTypes anymore, so from their side the problem will persist.
But the developers here didn’t show any interest in merging your pr, which might be because they don’t support web. So that means we’re by ourselves to make it work. Fixing it at react native web is just less code and by that the path of the least resistance.

@capelski

@BlameFelix I’ve finally understood how react-native-web is involved; expo adds it as dependency to our project’s package.json. So yes, fixing the issue in react-native-web would do the trick.

I’ve been reading about it and the situation here is that React Native deprecated propTypes in v0.60, so did react-native-web in v0.12:

image

That’s why they closed necolas/react-native-web#1537 last year. Seems that propTypes are gone for good. Being that the case, we can’t count on react-native-web to fix the issue.

In fact, knowing about this deprecation, my fix (#820) is also a bad idea. We should align with the React Native evolution and remove propTypes instead of mocking the missing types.

@capelski

I’ve created #836, removing references to ViewPropTypes instead of mocking the missing properties. Perhaps maintainers of the repo like this approach better even though is not the ideal fix: migrating to Flow types

@i6mi6

As a temp workaround I went into node_modules/react-native-snap-carousel and replaced all appearances of ViewPropTypes and ViewPropTypes.style with PropTypes.any then patching using npx patch-package react-native-snap-carousel
For example inside node_modules/react-native-snap-carousel/src/pagination/PaginationDot.js replaced
ViewPropTypes ? ViewPropTypes.style : View.propTypes.style with PropTypes.any

@petrkrejcik

If you don’t mind using different Carousel component for web and native you can use codegen.macro as a workaround. The idea is that on web you will load a web-compatible component and on native you will load react-native-snap-carousel.

// webpack.config.js
const createExpoWebpackConfigAsync = require('@expo/webpack-config');

module.exports = async function (env, argv) {
  const config = await createExpoWebpackConfigAsync(env, argv);
  process.env.IS_WEB = true; // <--- Add this
  return config;
};
// carousel/index.js
import codegen from 'codegen.macro';

codegen`
if (process.env.IS_WEB) {
  module.exports = "import { CarouselWeb as Carousel } from './Carousel.web'; export { Carousel };";
} else {
  module.exports = "import { Carousel } from './Carousel'; export { Carousel };";
}
`;
// carousel/Carousel.js
import React from 'react';
import CarouselLib from 'react-native-snap-carousel';

export const Carousel = () => {
  return (
    <CarouselLib
    // ...
    />
  );
};
// carousel/Carousel.web.js
import React from 'react';
import { Image } from 'react-native';

export const CarouselWeb = () => {
  return (
    <Image
    // ...
    />
  );
};
// App.js
import { Carousel } from 'carousel';

export default function App() {
  return <Carousel />;
}

@hirbod

@petrkrejcik thats a very interesting approach. Does this work with expo? And how do you deal css/scss which is shipped with most of those web components? I am currently looking for a solution which stops preventing me from using expo but giving me the freedom to use default web components for the «web part» of my application while still be able to produce a native app.

Edit: your example worked perfectly. Also managed to load css and scss. Awesome!

@dohooo

This comment was marked as spam.

@udemezue01

I have these errors too, any help

@benjamingordon27

still getting these errors on the web!
Screen Shot 2021-11-11 at 1 04 25 PM

@Benj846

we need this to support on web as well thanks!!

@YajanaRao


1 similar comment

@zail59

@erjakhar96

Still no update on this issue?

@udemezue01

THanks, I fixed it already!

@bzozoo

THanks, I fixed it already!

How?

@udemezue01

@bananemo

@udemezue01 I’ve encountered the same issue, is it possible for you to share your solution? Thanks!

@capelski

@bananemo

@Chris-Imade

@Chris-Imade

Qwerty_Wasd

dev — investigator

Эксперт JSЭксперт HTML/CSS

2148 / 1493 / 651

Регистрация: 16.04.2016

Сообщений: 3,696

26.02.2019, 04:08

2

The little nigh, ошибка у Вас происходит потому, что Вы пытаетесь обратиться к свойству объекта, которого или нет или этого свойства нет у объекта, к которому Вы обратились.
Признаюсь никакого желания исправлять Ваш код нету, простите. Предположу, что Вы хотели добиться примерно такого результата — https://jsfiddle.net/Qwerty_Wasd/fvb0kuae/
Обратите, внимание на некоторые изменения в идентификации узлов дерева.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div id = "main_header_window"> 
</div>
 
<main>
    <aside id='aside-menu'>
        <ul>
            <li class="li_main_menu"><a href="#" class="a_main_menu">Text 1</a></li>
            <li class="li_main_menu"><a href="#" class="a_main_menu">Text 2</a></li>
            <li class="li_main_menu"><a href="#" class="a_main_menu">Text 3</a></li>
            <li class="li_main_menu"><a href="#" class="a_main_menu">Text 4</a></li>
        </ul>
    </aside>
    <div id="main_in_main_window">
        <div class="content_of_menu_in_main_menu one show" id="window_in_main1">Text 1</div>
        <div class="content_of_menu_in_main_menu two" id="window_in_main2">Text 2</div>
        <div class="content_of_menu_in_main_menu three" id="window_in_main3">Text 3</div>
        <div class="content_of_menu_in_main_menu four" id="window_in_main14">Text 4</div>
    </div>
</main>
 
<div id = "main_footer_window"> 
</div>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
let opAccord = {
    menu: document.getElementById('aside-menu'),
    content: document.getElementsByClassName('content_of_menu_in_main_menu'),
    events: {
        click: e => {
            if (e.target.classList.contains('a_main_menu')) {
                Array.from(opAccord.content, (el, ind) => ind === Array.from(document.getElementsByClassName(e.target.className)).indexOf(e.target) ?
                el.classList.add('show') : el.classList.remove('show'));
            }
        },
    },
}
opAccord.menu.addEventListener('click', opAccord.events.click);

Также добавлю, что то что Вы хотели сделать, если я прав конечно — это обыкновенные табы. То есть вполне можно было обойтись без JS.
Например — https://codepen.io/qwerty_wasd/pen/BGOLbW

HTML5
1
2
3
4
5
6
7
8
9
10
11
<div class="tabs-widget">
  <input class="tab-trigger" type="radio" id="tab-1-1" name="radio" checked="checked"/>
  <label for="tab-1-1">LINK1</label>
  <input class="tab-trigger" type="radio" id="tab-1-2" name="radio"/>
  <label for="tab-1-2">LINK2</label>
  <input class="tab-trigger" type="radio" id="tab-1-3" name="radio"/>
  <label for="tab-1-3">LINK3</label>
  <div class="scroller" id="tab_1_1">Lorem ipsum dolor sit amet consectetur adipisicing elit. Nisi recusandae error corrupti molestias tenetur obcaecati a? Saepe magnam animi iure harum quibusdam unde sit reprehenderit accusamus dolorum, quo quis quidem?</div>
  <div class="scroller" id="tab_1_2">Loremのイプサムのニンジンは、リベートを強化します。誤って受け入れた場合面倒バウンド盲目になりますか?心の中で、これらの偉大な悲しみの一部を非難する権利、多くの場合、男性は全く不明である何の事、彼がどこから来るかで障害を見つけますか?</div>
  <div class="scroller" id="tab_1_3">Lorem ipsum गाजर बढ़ाया छूट। अगर गलती से स्वीकार कर लिया परेशानी बाध्य अंधा हो गए हैं? मन की है, है ना इन महान दु: ख में से कुछ का आरोप लगा है, अक्सर जहां वह, से आता है क्या बातें एक आदमी पूरी तरह अनजान हैं के साथ गलती खोजने के?</div>
</div>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
*,
*:after,
*:before {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
  outline: 0;
}
 
/*стили выше добавлены только для этого примера, в реальном проекте используйте normalize.cssreset.css*/
.tabs-widget {
  position: relative;
  text-align: center;
}
 
.tab-trigger {
  display: none;
}
 
label {
  margin: 0 20px;
  cursor: pointer;
}
label:hover {
  background: gray;
}
 
.scroller {
  position: absolute;
  left: 50%;
  -webkit-transform: translatex(-50%);
          transform: translatex(-50%);
  margin-top: 10px;
  width: 400px;
  opacity: 0;
  transition: 2s;
}
.scroller:nth-of-type(1) {
  color: red;
}
.scroller:nth-of-type(2) {
  color: green;
}
.scroller:nth-of-type(3) {
  color: blue;
}
 
#tab-1-1:checked ~ #tab_1_1 {
  opacity: 1;
  transition: 2s;
}
#tab-1-1:checked ~ label[for='tab-1-1'] {
  background: #000;
  color: #fff;
}
 
#tab-1-2:checked ~ #tab_1_2 {
  opacity: 1;
  transition: 2s;
}
#tab-1-2:checked ~ label[for='tab-1-2'] {
  background: #000;
  color: #fff;
}
 
#tab-1-3:checked ~ #tab_1_3 {
  opacity: 1;
  transition: 2s;
}
#tab-1-3:checked ~ label[for='tab-1-3'] {
  background: #000;
  color: #fff;
}



0



jQuery DataTables displays a message when there is Ajax error or invalid JSON response. However most of the time you will only see a JavaScript error in your browser console if something is wrong. I have compiled a list of the most common JavaScript errors appearing in the console, their cause and possible solutions.

  • TypeError: $(…).DataTable is not a function
  • TypeError: aData is undefined
  • TypeError: f is undefined
  • TypeError: Cannot read property ‘length’ of undefined
  • TypeError: headerCells[i] is undefined
  • TypeError: n[m] is undefined
  • TypeError: Cannot read property ‘style’ of undefined
  • TypeError: Cannot set property ‘nTf’ of undefined
  • TypeError: Cannot read property ‘mData’ of undefined
  • TypeError: col is undefined

TypeError: $(…).DataTable is not a function

Cause

  • jQuery DataTables library is missing.
  • jQuery library is loaded after jQuery DataTables.
  • Multiple versions of jQuery library is loaded.

Solution

Include only one version of jQuery library version 1.7 or newer before jQuery DataTables.

TypeError: aData is undefined

Cause

jQuery DataTables cannot find the data in the response to the Ajax request.

By default jQuery DataTables expects the data to be in one of the formats shown below. Error occurs because data is returned in the format other than default.

Array of arrays

{ 
   "data": [
      [
         "Tiger Nixon",
         "System Architect",
         "$320,800",
         "2011/04/25",
         "Edinburgh",
         "5421"
      ]
   ]
}

Array of objects

{ 
   "data": [
      {
         "name": "Tiger Nixon",
         "position": "System Architect",
         "salary": "$320,800",
         "start_date": "2011/04/25",
         "office": "Edinburgh",
         "extn": "5421"
      }
   ]
}

Solution

Use default format or use ajax.dataSrc option to define data property containing table data in Ajax response (data by default).

See Data array location for more information.

TypeError: f is undefined

See the following errors for a possible cause and solution:

  • TypeError: aData is undefined

TypeError: Cannot read property ‘length’ of undefined

See the following errors for a possible cause and solution:

  • TypeError: aData is undefined

TypeError: headerCells[i] is undefined

TypeError: n[m] is undefined

Cause

  • Number of th elements in the table header or footer differs from number of columns in the table body or defined using columns option.
  • Attribute colspan is used for th element in the table header.
  • Incorrect column index specified in columnDefs.targets option.

Solution

  • Make sure that number of th elements in the table header or footer matches number of columns defined in the columns option.
  • If you use colspan attribute in the table header, make sure you have at least two header rows and one unique th element for each column. See Complex header for more information.
  • If you use columnDefs.targets option, make sure that zero-based column index refers to existing columns.

TypeError: Cannot read property ‘style’ of undefined

See the following errors for a possible cause and solution:

  • TypeError: headerCells[i] is undefined

TypeError: Cannot set property ‘nTf’ of undefined

Cause

  • Number of th elements in the table footer differs from number of th elements in the table header.

Solution

  • Make sure that number of th elements in the table footer matches number of th elements in the table header.

TypeError: Cannot read property ‘mData’ of undefined

TypeError: col is undefined

Cause

  • Missing table header.
  • Number of td elements in the table body differs from number of th elements in the table header.

Solution

  • Make sure that your table has a header. See Requirements for more information.
  • Make sure that number of td elements in the table footer matches number of th elements in the table header.

Michael Ryvkin

Freelance web developer based in Perkasie, Bucks County, PA. I design and develop custom websites and web applications, perform website maintenance and provide technical support for small and medium-sized businesses.

Contact me for a free quote or consultation on your project.

Понравилась статья? Поделить с друзьями:
  • Error cannot read property match of undefined
  • Error cannot read boot image header
  • Error cannot pull with rebase you have unstaged changes error please commit or stash them
  • Error cannot open winrar
  • Error cannot open trainz asset database