babel-plugin-macros - MacroError: выполняется макрос, который вы импортировали из «undefined» - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть проект сайта Гэтсби. Поскольку конфигурация Babel по умолчанию в Gatsby содержит babel-plugin-macros, мне не нужно много ее настраивать.

Например, я установил preval.macro , и он отлично работает.

Теперь я хочу создать свой собственный макрос для каких-то вещей. Поэтому я создал новый пакет NPM, содержащий только пакет. json, index. js и макрос. js. Макрос сам по себе ничего не делает.

Но если я установлю пакет и попытаюсь его использовать, я получу

MacroError: Макрос, который вы импортировали из "undefined", выполняется вне контекста компиляции с babel- плагин-макросы. Это означает, что у вас неправильно настроен плагин babel "babel-plugin-macros".

пакет. json

{
  "name": "my-package",
  "version": "0.0.21-alpha",
  "description": "my package description",
  "main": "dist/index.js",
  "scripts": {
    ...
  },
  "keywords": [],
  "author": "John Doe <john@doe.com>",
  "license": "ISC",
  "dependencies": {
    ...
  }

}

index. js

import macro from "./macro";
export default macro;

macro. js

import { createMacro } from "babel-plugin-macros";
export default createMacro(macro);
function macro({ references, babel, path }) {
    const { default: items = [] } = references;
    items.forEach((reference) => {
        if (!reference.parentPath.node.quasi) {
            return;
        }
    });
}

Update

Я бы хотел использовать такой макрос

import macro from "my-macro";

console.log(macro`something`)

Обновление 2

Я создал codesandbox для крошечного стартового проекта Гэтсби, который показывает проблему.

Codesandbox

1 Ответ

0 голосов
/ 19 февраля 2020

Проблема в том, что оператор импорта для макроса не соответствует требуемому соглашению для babel-plugin-macros для преобразования кода и вызова пользовательского макроса.

Вам нужно изменить имя файла, чтобы оно заканчивалось .macro или импортируйте файл макроса, например: my/macro.

Узнайте больше из документации здесь: https://github.com/kentcdodds/babel-plugin-macros/blob/master/other/docs/author.md#filename

Удачи!

...