Класс Object не является конструктором - PullRequest
0 голосов
/ 26 февраля 2019

Я создал свою собственную библиотеку Vue.js npm, чтобы помочь мне с моими личными проектами.Все работает отлично, за исключением попытки импортировать Class

Я определил класс следующим образом:

import Vue from 'vue'

export default class Foo {
  constructor () {
    ...
  }
}

my npm packages.json:

"main": "./dist/my-custom-lib.common.js",
"scripts": {
  "serve": "vue-cli-service serve",
  "build": "vue-cli-service build",
  "build-bundle": "vue-cli-service build --target lib --name my-custom-lib ./index.js",
  "test:unit": "vue-cli-service test:unit"
},
"files": [
  "dist/my-custom-lib.common.js",
  "src/components/*",
  "src/controllers/*",
  "src/mixins/*",
  "src/utilities/*"
],

Для публикации я делаю yarn build-bundle, за которым следует npm publish.

Когда я пытаюсь импортировать его из моего другого проекта:

import { Foo } from '@username/my-custom-lib'

Я получаю следующую ошибку:

global-plugin.js?3d38:9 Uncaught TypeError: _username_my_custom_lib__WEBPACK_IMPORTED_MODULE_2__.Foo is not a constructor

Я могу использовать все другие компоненты функций / миксины / vue, но не этот класс.

РЕДАКТИРОВАТЬ: Вот частичное содержимое файла common.js:

var foo_Foo =
/*#__PURE__*/
function () {
  function Foo(router) {
    _classCallCheck(this, Foo);
  }

  _createClass(Foo, [{
    ...source contents...
  }]);

  return Foo;
}();

/* concated harmony reexport foo */__webpack_require__.d(__webpack_exports__, "foo", function() { return foo_Foo; });

index.js, который вызывается как часть yarn build-bundle, содержит следующее:

import * as components from '@/components'

const VueComponents = {
  install (Vue) {
    for (const plugin in components) {
      Vue.component(plugin, components[plugin])
    }
  }
}

export * from '@/mixins'
export * from '@/utilities'
export * from '@/controllers'

export default VueComponents

внутри @/controllers/index.js:

import foo from './foo'

export {
  foo
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...