Хотя я могу запустить проект npm, используя npm start
без проблем с webpack или babel, после запуска npm test
я обнаружил следующую ошибку, связанную с тестированием App.js
с использованием App.test.js
(где App.js
импорт ApolloClient
):
TypeError: Cannot assign to read only property '__esModule' of object '[object Object]'
| import ApolloClient from 'apollo-boost';
| ^
at node_modules/apollo-boost/lib/bundle.cjs.js:127:74
at Array.forEach (<anonymous>)
at Object.<anonymous> (node_modules/apollo-boost/lib/bundle.cjs.js:127:36)
По сути, я не понимаю, почему я получаю ошибку при запуске теста, а не при запуске проекта.
Я попытался добавить несколько плагинов babel как в .babelrc
, так и в мой файл конфигурации webpack:
- @ столпотворение / плагин-преобразование-объект-правопреемник
- @ Babel / плагин-преобразующие-модули-CommonJS
- столпотворение-плагин-преобразующий-es2015-модули-CommonJS
Однако мне не удалось решить проблему. Я думал, что это связано с тем, что файл, который не может быть скомпилирован, изначально был CommonJS.
Мне удалось найти здесь нечто относительно похожее, https://github.com/ReactTraining/react-router/pull/6758,, но я не нашел решения.
Есть ли что-то, что я упускаю, конкретно относящееся к выполнению тестов? Я должен также упомянуть, что я пробовал фреймворки, отличные от Jest, и столкнулся с той же проблемой.
EDIT:
Я удалил все из App.test.js
, кроме импорта, чтобы изолировать проблему, поэтому она просто содержит следующее:
import React from 'react';
import { shallow } from 'enzyme/build';
import App from './App';
UPDATE:
Мне удалось устранить начальную ошибку, обновив apollo-boost
с версии 0.3.1
до 0.4.2
. Тем не менее, у меня теперь есть другая ошибка, которая также расстраивает. Я использую Babel 7
и добавил плагин @babel/plugin-syntax-dynamic-import
как для моих .babelrc
, так и для моих webpack.config.js
файлов. Несмотря на это, я получаю следующую ошибку, связанную с использованием динамического импорта в App.js
при запуске Jest для проверки App.test.js
:
SyntaxError: Support for the experimental syntax 'dynamicImport' isn't currently enabled
Add @babel/plugin-syntax-dynamic-import (https://git.io/vb4Sv) to the 'plugins' section of your Babel config to enable parsing.
Я не уверен, есть ли ошибка синтаксического анализа или что-то еще, но я пробовал множество вещей, которые не работали. Самое близкое обсуждение, которое я мог найти относительно этой проблемы, это https://github.com/facebook/jest/issues/5920,, однако, предложенные решения не работают для меня.
UPDATE:
Я пытаюсь избежать дублирования опций babel
, так как сейчас они оба в .babelrc
и в babel-loader
options
в webpack.config.js
. Из того, что я нашел в Интернете ( Какая разница при настройке webpack babel-loader и его настройке в package.json? ), способ заставить webpack
использовать настройки в .babelrc
- не указывать options
. Однако это приводит к той же ошибке, описанной выше, которая появляется только в этот раз при запуске npm start
. Я добавлю, что проект, который был изначально создан с использованием create-react-app
, однако, чтобы поддерживать несколько страниц, мне нужно было настроить конфигурацию webpack
и таким образом извлечь ее. Я не уверен, почему это так запутанно.