Как потребовать модуль Node.js? - PullRequest
0 голосов
/ 14 января 2019

Руководство MDN по компиляции Rust в WASM делает следующее утверждение:

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

Что относится к этому фрагменту кода:

const js = import("./node_modules/@yournpmusername/hello-wasm/hello_wasm.js");

Какова «лучшая практика» для импорта модуля hello-wasm ?


Я попробовал то, что, как я думал, будет работать, так как вы импортируете другие установленные модули, но это не сработало:

const js = require("hello-wasm");

Это дало модулю не найденную ошибку. Обратите внимание, что node_modules включает в себя каталог hello-wasm , помещенный туда с помощью npm.


Добавление "main": "hello_wasm.js" к package.json в пакете hello_wasm приводит к следующей ошибке:

A JavaScript error occurred in the main process
Uncaught Exception:
/home/vinnie/electron-wasm/node_modules/hello-wasm/hello_wasm.js:2
import * as wasm from './hello_wasm_bg';
       ^

SyntaxError: Unexpected token *

1 Ответ

0 голосов
/ 14 января 2019

Возможно, вы не можете импортировать, потому что правильное имя пакета @yournpmusername/hello-wasm, а не hello-wasm. Возможно, вы захотите взглянуть на файл package.json.

Я полагаю, что "лучшая практика" будет той же практикой, что и большинство людей, когда они синхронно импортируют внешнюю зависимость, то есть пишут import { foo, bar } from 'wasm-module-example', но есть проблема, это поведение будет зависеть от упаковщика. вы используете.

Parcel упрощает импорт модулей wasm и webpack, пакет, используемый в руководстве по MDN, имеет некоторые некоторые предостережения , поэтому в настоящее время лучше импортировать асинхронно вместо синхронно.

import('@yournpmusername/hello-wasm').then(wasm => wasm.some_function()).catch(console.error);
...