MDX-故事书+ React +打字稿

时间:2020-02-05 07:42:20

标签: reactjs typescript babeljs storybook

我尝试使用MDX标记为故事集构建实时文档。当我运行故事书时,出现此错误:

模块构建失败(来自./node_modules/babel-loader/lib/index.js):

SyntaxError: C:/Users/User/Desktop/priority-style-react/src/stories/Button1.stories.mdx: Unexpected token (12:9)

  10 | const makeShortcode = name => function MDXDefaultShortcode(props) {
  11 |   console.warn("Component " + name + " was not imported, exported, or provided by MDXProvider as global scope")
> 12 |   return <div {...props}/>
     |          ^
  13 | };
  14 | const Preview = makeShortcode("Preview");
  15 | const layoutProps = {

我要加载.mdx的webpack配置是:

config.module.rules.push({
    test: /\.mdx?$/,
    use: [{loader: "babel-loader"}, {loader: '@mdx-js/loader'}],
    exclude: /node_modules/,
    include: [/src/]
});

故事书config.js:

import { configure, addDecorator } from '@storybook/react';
import { withKnobs } from '@storybook/addon-knobs';

import '../style/index.scss';

const req = require.context('../src/stories', true, /.stories.(tsx|mdx)/);

addDecorator(withKnobs);
configure(req, module);

看起来像加载程序工作不正确。 谁能帮助我了解我错过的事情吗?

2 个答案:

答案 0 :(得分:1)

好吧,MDX文件中有些愚蠢的东西

我们不接受空白行。

const makeShortcode = name => function MDXDefaultShortcode(props) {
console.warn("Component " + name + " was not imported, exported, or provided by MDXProvider as global scope")
return <div {...props}/>
 // remove this blank line here.
};

const makeShortcode = name => function MDXDefaultShortcode(props) {
console.warn("Component " + name + " was not imported, exported, or provided by MDXProvider as global scope")
return <div {...props}/>
};

它应该起作用,因为我在这个问题上抓了几个小时。

答案 1 :(得分:1)

所以,伙计们,也许这个答案对某人有用,并节省了很多宝贵的时间。

我已解决此问题,只是删除了.mdxwebpack.config.js扩展名的配置。我只是将故事书config.js保留了原样。问题消失了。

另外,如Zunaib Imtiaz回答的那样,如果您的.mdx文件中的JSX代码之间有空行,您将面临这个问题。

祝大家好运!