使用webpack打包报出: This seems to be a pre-built javascript file.....

文件中依赖了一个通过npm安装的前端类库: sweetalert,在打包时报出warning:


WARNING in ./~/sweetalert/dist/sweetalert-dev.js Critical dependencies: 4:115-122 This seems to be a pre-built javascript file. Though this is possible it's not recommended. Try to require the original source to get better results @ ./~/sweetalert/dist/sweetalert-dev.js 4:115-122

一开始直接require('sweetalert') 报出上面的错误,网上并没有具体的,都是查到的其他的库的issue中提到的问题,根据那些问题猜到可能sweetalertpackage.json中的main指定为dist/sweetalert.min.js 是一个压缩好的文件,但是改成引用未压缩的还是报同样的错误: require('sweetalert/dist/sweetalert-dev.js').

难道要引用其项目中的开发环境下的入口文件?

阅读 10.1k
2 个回答

通过翻查文档,在shimming-modules找到解决方案:

将其加入noParse,让webpack忽略对其进行解析。

刚看了 Sweetalert 的 package.json 文件。不难发现它的入口文件确实指向了一个编译后的结果。实际上这是一个不好的示范,通常 bower 的 package 倒会这样做。

给题主两个办法:

  1. 使用 alias 直接指向合适的文件
  2. fork 一份自己修改,无论是 npm install [repo] 也好或者 npm link也好,都可以解决这个问题(最好可以提交一个 pull request )。
  3. 忍着…(逃
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏