我正在尝试使用Rails 6 webpacker从gem的文件夹中导入javascript。我看到每次导入仅用1个文件完成此操作。是否可以使用* .js扩展名来获取gem的所有文件?
javascript / packs / application.js.erb
import "<%= File.read(File.join(Gem.loaded_specs['active_storage_drag_and_drop'].full_gem_path, 'lib', 'assets', 'javascripts', 'active_storage_drag_and_drop/*.js')) %>";
错误
(erb):17:in `read': No such file or directory @ rb_sysopen -/home/user.../active_storage_drag_and_drop../assets/javascript/active_storage_drag_and_drop/index.js
答案 0 :(得分:0)
此软件包可在NPM上使用:https://www.npmjs.com/package/active_storage_drag_and_drop
我会这样做:
yarn add active_storage_drag_and_drop
然后在您的Webpack js文件中:
import * as ActiveStorageDragAndDrop from "active_storage_drag_and_drop"
window.ActiveStorageDragAndDrop = ActiveStorageDragAndDrop // needed as of v1.0.3
我已经在https://github.com/rossta/rails6-webpacker-demo/tree/example/active_storage_drag_and_drop的分支中创建了一个有效的演示
由于package's JS source makes assumptions about globals自v1.0.3起,因此在项目JS中分配了导入的var 在更新软件包之前是必需的。
对于基于Ruby的依赖项,您可能仍需要Gemfile中的gem。
通常,我不建议您尝试通过ERB中的gem路径查找Ruby gems提供的javascript依赖项。迁移到Webpack / Webpacker的优点之一是,您应该尽可能地利用NPM增强依赖关系。