ruby-on-rails 使用Rails 7、刺激和导入Map加载uppy

s2j5cfk0  于 2023-04-22  发布在  Ruby
关注(0)|答案(1)|浏览(140)

是否可以通过Rails 7导入Map将Uppy加载到一个普通的Rails应用程序中?
如果你最终固定@uppy/core,你会在importmap文件中添加很多依赖项:

bin/importmap pin @uppy/core

...但当您尝试通过Stimulus控制器访问它时,如:

import Uppy from '@uppy/core';

你会得到各种各样的不那么有用的错误。
Safari显示:

syntaxerror: Importing binding name 'default' cannot be resolved by star export entries.

Chrome有几个不同的答案:

SyntaxError: The requested module 'classnames' does not provide an export named 'default'

(我还发现这是mime-match而不是classnames的问题。
在调试方面我有点力不从心-很难看出问题的根源。这是一个“不能真正使用Rails 7导入Map”类型的答案吗?

ttvkxqim

ttvkxqim1#

我认为这与不同env支持的不同导入风格有关。jspm和importmap-rails的维护者一直鼓励用户提交问题或修复依赖项。

我能够重现您在使用unpkg时看到的Failed to register controller: uppy (controllers/uppy_controller) SyntaxError: The requested module 'mime-match' does not provide an export named 'default'问题。
JSPM似乎没有这个问题,我认为它做了更多的工作来解决这个问题。你可能想尝试使用--from jspm标志来切换。尽管如此,我相信这是默认的。

❯ ./bin/importmap pin @uppy/core @uppy/drag-drop --from jspm

这足以让我得到一个基本的控制器来加载Uppy和它的拖放插件:

import { Controller } from "@hotwired/stimulus"
import { Uppy } from "@uppy/core"
import { default as DragDrop }  from "@uppy/drag-drop"

// Connects to data-controller="uppy"
export default class extends Controller {
  connect() {
    const uppy = new Uppy({ })
      .use(DragDrop, {
        target: "#drag-drop"
      })
    window.uppy = uppy;

我没有做进一步的实验。可能还需要更多。

相关问题