Signature_pad: SignaturePad无法与Create React App一起使用

创建于 2017-05-26  ·  11评论  ·  资料来源: szimek/signature_pad

尝试在Webpack 2中使用signature_pad时发现错误!

我的项目正在使用Create React App的最新版本。 将SignaturePad与以前版本的Create React App一起使用可以按预期工作,但是当他们升级到Webpack 2时出现了一个错误。因此,我非常有信心,它与Webpack 2的新导入/导出机制有关。

目前的行为是什么?

尝试创建SignaturePad的新实例时,应用程序崩溃,并出现与Webpack相关的特定错误:

screen shot 2017-05-26 at 11 28 41 am

screen shot 2017-05-26 at 11 35 50 am

预期的行为是什么?

该实例应按预期创建,而不会崩溃。

哪个版本的SignaturePad和哪个浏览器/设备受此问题影响?

Chrome和Safari中似乎都发生了这种情况。

最有用的评论

更好的解决方法是直接导入js文件

import SignaturePad from 'signature_pad/dist/signature_pad.js';

所有11条评论

@taylorlapeyre感谢您的举报。 这真的很奇怪,因为它看起来像不是返回实际的JS代码,而是返回文件的路径,即
this: __WEBPACK_IMPORTED_MODULE_1_signature_pad___default.a等于this: "/static/media/signature_pad.2ceae229.mjs"

我将尝试找出问题所在,但如果任何人有任何想法并可以创建具有修复的PR,那就太好了。

@taylorlapeyre我想出了什么问题,我认为它实际上是react-create-app的错误,尽管我也可以在此处轻松修复。 问题是Webpack 2加载了ES6版本,该版本位于signature_pad.mjs文件中,但是我猜react-create-app中的Webpack配置不知道如何处理扩展名为.mjs文件-这就是为什么它返回文件名的原因。

@szimek啊,这很有道理。 我认为在这种情况下,修复程序可能应该在Create React App中。 你想在那里做个公关吗? 如果您给我一个起点,我也可以接受

仅作记录-我们的解决方法是直接将signature_pad.js文件直接复制到我们的src目录中。 完成此操作后,便可以按预期导入它。

非常感谢您对此快速回复,@ szimek。 我与@taylorlapeyre一起工作...只是分叉了仓库,并更改了构建过程以写出.js文件而不是.mjs文件。 我可以确认完全可以在我们的create-react-app上下文中使用! 但是,是的,由于mjs是一回事,因此听起来似乎更像是一个问题。

再次, @ szimek的巨大道具已经将其带到CRA了……看起来他们对支持mjs并不很感兴趣,尽管...如此。

我们可以制作一个补丁,以不同的名称导出umd构建,例如signature_pad.umd.js并使用signature_pad.js进行模块构建。 不过,不确定是否会对您当前的发行版产生多少影响。 另外,不确定此用例目前有多普遍...无论哪种方式,请让我们知道我们将如何帮助您!

是的,不过将这个文件重命名为signature_pad.es6.js可能很有意义,以确保所有地方都支持该文件。 但是,再次重命名dist文件需要一个主要版本,因此这可能需要等待一段时间。 我需要检查另一个与默认导出与命名导出相关的问题,该问题也需要主要版本(#240)。 也许我会同时做两个。

更好的解决方法是直接导入js文件

import SignaturePad from 'signature_pad/dist/signature_pad.js';

感谢您的解决方法,从signature_pad/dist/signature_pad.js导入对我们的atm有效。

Facebook提出了有关如何处理的官方建议。
基本上,他们认为ES6不能再被完全支持,因此图书馆应该发布ES5代码。 请参阅自述文件中的此部分:

https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#npm -run-build-fails-to-minify

以为我会让你知道。

我还没有尝试过,但是create-react-app v2也应该在node_modules编译代码-https: //github.com/facebook/create-react-app/pull/3776。 signature_pad的v3(当前处于beta版)不再使用mjs扩展名,因此它应该与create-react-app v2一起使用,尽管可以确认。

如果在使用CRA 2和该库的最新Beta版本时仍然存在问题,请重新打开此问题。

此页面是否有帮助?
0 / 5 - 0 等级