Jest - Невозможно использовать оператор импорта вне модуля - с использованием Rescript
Я пытаюсь запустить модульные тесты в проекте React, созданном с использованием сценариев реакции, в которые я добавил поддержку ReScript.
Однако при запуске тестов я обнаружил ошибку в транспилированном коде javascript.
Подробная информация об ошибке:
/Users/massimilianodacunzo/Projects/Elixir/test-project/apps/phoenix_react_web/assets/node_modules/bs-platform/lib/es6/array.js:3
import * as Curry from "./curry.js";
^^^^^^
SyntaxError: Cannot use import statement outside a module
1 |
2 |
> 3 | import * as $$Array from "../../../node_modules/bs-platform/lib/es6/array.js";
| ^
4 | import * as React from "react";
5 |
6 | function TestComponent(Props) {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1350:14)
at Object.<anonymous> (src/components/users/TestComponent.bs.js:3:1)
Компоненты, которые я пытаюсь протестировать:
App.res
%%raw(`
import logo from './logo.svg';
import './App.css';
`)
@react.component
let make = () => {
<div className="App">
<TestComponent elements={["1", "2", "3"]} />
</div>
}
TempComponent.res
@react.component
let make = (
~elements: array<string>
) => {
<ul>
{
React.array(
elements
|> Array.map(e =>
<li key={e}>{React.string(e)}</li>)
)
}
</ul>
}
Созданный TestComponent.bs.js
import * as $$Array from "../../../node_modules/bs-platform/lib/es6/array.js";
import * as React from "react";
function TestComponent(Props) {
var elements = Props.elements;
return React.createElement("ul", undefined, $$Array.map((function (e) {
return React.createElement("li", {
key: e
}, e);
}), elements));
}
var make = TestComponent;
export {
make ,
}
/* react Not a pure module */
Могу ли я добавить дополнительную конфигурацию в
react-scripts test
сценарий?
1 ответ
Следуя комментарию , я проследил за проблемой git и обнаружил, что конфигурация в моем файле bsconfig.json указывает модуль package-specs как es6 . Ошибка теста не появлялась, если я меняю конфигурацию на commonjs .
{
...
"package-specs": {
"module": "commonjs",
"in-source": true
}
...
}
Еще раз спасибо user7943564 за то, что указал мне правильное направление.