Я пытаюсь создать библиотеку реакции, используя create-react-library
, который использует веб-сборку, однако при запуске проекта я получаю следующую ошибку.
Failed to compile.
/path/to/bar/pkg/bar_bg.wasm
Module parse failed: magic header not detected
File was processed with these loaders:
* ../node_modules/react-scripts/node_modules/file-loader/dist/cjs.js
You may need an additional loader to handle the result of these loaders.
Error: magic header not detected
Моя установка выглядит следующим образом:
- Создайте проект wasm Rust:
wasm-pack new bar
- Добавьте простую функцию в
lib.rs
:
use js_sys;
#[wasm_bindgen]
pub fn name() -> js_sys::JsString {
"Nic".into()
}
- Добавьте js-sys как зависимость к
Cargo.toml
:
[dependencies]
js-sys="0.3.45"
- Сборка wasm-проекта:
wasm-pack build
- Создайте библиотеку реакции:
cd ..
create-react-library foo --skip-prompts --template typescript
- Добавьте bar (wasm) как зависимость от foo (react lib):
"dependencies": {
"bar": "file:../bar/pkg"
},
- Измените
foo/src/index.tsx
на:
import * as React from 'react'
import styles from './styles.module.css'
import { name } from "bar";
interface Props {
text: string
}
export const ExampleComponent = ({ text }: Props) => {
return <div className={styles.test}>Example Component: ({name()}) {text}</div>
}
- В одном терминале:
cd foo && npm i && npm start
- В другом терминале:
cd foo/example && npm i && npm start
Здесь возникает ошибка вверху.