Не удается импортировать объект документа Ace в проект vue webpack? - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу использовать редактор Ace в своем проекте vue и webpack, я хочу прикрепить каждый файл к одному экземпляру Ace Document, поэтому я следую (импорт по умолчанию)

import Ace from 'ace-builds'

Когда я хочудля создания документа.

let doc = new Ace.Ace.Document('')

Но инструменты разработчика Chrome всегда говорят мне

TypeError: Cannot read property Document' of undefined at FileTree.vue:177

и let doc = new Ace.Document('') также не работают

Iесть один файл js, который импортирует Ace, и он работает хорошо, коды здесь. editor.js

Мои коды (в методах vue: {}):

addFile (e) {
  let tree = this.$refs.maintree
  if (this.currentNode === undefined) {
    this.currentNode = tree.getNode(1)
  }
  this.openAddFilePrompt().then(({value}) => {
    let doc = new Ace.Ace.Document('')
    if (this.currentNode.data.detail.type === 'file') {
      let parentNode = this.currentNode.parent
      tree.append({detail: {type: 'file', src: '', document: doc}, id: this.maxId++, label: value}, parentNode)
      return
    }
    this.maxId++
    tree.append({detail: {type: 'file', src: '', document: doc}, id: this.maxId, label: value}, this.currentNode)
  }).catch((err) => {
    console.log(err)
  })
},

Это мой d.ts файл ace-builds

enter image description here

Как видно из рисунка, интерфейс документа, помещенный в пространство имен Ace, импортирует общий модуль как Ace, поэтому я думаю, что должен новый документОбъект с new Ace.Ace.Document, который является defaultImport.Namespace.Interface


Интерфейс документа следует.Моя ace-builds устанавливается через npm export interface Document extends EventEmitter

enter image description here


ace-builds структура папок выглядит следующим образом

enter image description here

Мой вопрос:

Почему мой импорт не работает, и я не могу создать объект документа?

Я пытался дать вам все, что может помочьты решил мой вопрос

1 Ответ

0 голосов
/ 19 сентября 2018

Наконец, я решил этот вопрос после многих попыток.

Я не знаю, почему я не могу импортировать export interface из пространства имен.Я нашел функцию require в ace.d.ts, поэтому я изменил

let doc = new Ace.Ace.Document('')

на

let Document = Ace.require('ace/document').Document

Когда мне нужен объект документа, простоlet document = new Document()

это работает.

Надеюсь, что это может помочь другим, у которых тот же вопрос, что и у меня.


Как я решил?

Я ищу ace.js о exports.Document и нашел ace/document enter image description here

enter image description here

...