Javascript 类对象不是构造函数
我创建了自己的Vue.js npm库来帮助我完成个人项目。除了尝试导入Javascript 类对象不是构造函数,javascript,node.js,vue.js,npm,Javascript,Node.js,Vue.js,Npm,我创建了自己的Vue.js npm库来帮助我完成个人项目。除了尝试导入类 我对类的定义如下: 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", "bui
类
我对类的定义如下:
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/*"
],
要发布,我执行纱线构建捆绑
,然后执行npm发布
当我尝试从其他项目导入时:
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
我可以使用所有其他函数/mixin/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
作为纱线构建捆绑包的一部分调用,它包含以下内容:
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
}
您的类是默认导出,因此您希望从“@username/my custom lib”导入Foo
(无大括号)这不是默认值。只是该文件的默认值,但我正在导出许多文件。在不使用大括号的情况下使用时,我会出现以下错误:\u用户名\u我的\自定义\库\网页包\导入的\模块\ 2 \默认值。a不是构造函数
“它不是默认值”我添加了一个编辑,以显示common.js
与Foo
类和index.js
内容相关的内容,这些内容在warn build bundle
中使用。Foo类位于/controllers
中,因此您将Foo
导出为Foo
。看到问题了吗?您的类是默认的导出,所以您希望从“@username/my custom lib”导入Foo
(没有大括号)。这不是默认值。只是该文件的默认值,但我正在导出许多文件。在不使用大括号的情况下使用时,我会出现以下错误:\u用户名\u我的\自定义\库\网页包\导入的\模块\ 2 \默认值。a不是构造函数
“它不是默认值”我添加了一个编辑,以显示common.js
与Foo
类和index.js
内容相关的内容,这些内容在warn build bundle
中使用。Foo类位于/controllers
中,因此您将Foo
导出为Foo
。看到问题了吗?