我为某些项目创建了es6库。
当我导入该库时,所有静态函数都会引发错误。
这是一个例子。
我的班级(es6):
class JsonSerializer {
static toJson(node) { /* some code */ }
}
export default JsonSerializer
打字稿定义文件:
export class JsonSerializer {
static toJson(root: Node): any
static fromJson(config: any): Node
}
我这样导入我的班级
import {JsonSerializer} from 'ls-serializer'
当我尝试使用toJson
静态方法时。
它给我以下错误:
_lsSerializer.JsonSerializer.toJson is not a function
对于所有静态方法,我都有相同的错误。
我错过了什么吗?
这是我的库webpack配置:
const path = require('path');
module.exports = {
entry : {
serializer : './src/serializer.js'
},
output : {
path : path.resolve(__dirname, 'dist'),
filename : '[name].bundle.js',
libraryTarget: 'commonjs-module'
},
resolve : {
extensions : ['.js', '.jsx'],
alias : {
'@' : path.resolve(__dirname, 'src'),
'~' : path.resolve(__dirname, 'examples')
}
},
devServer : {
contentBase : path.resolve(__dirname, 'dist'),
compress : true,
port : 9000
},
module : {
rules : [{
test : /\.(js|jsx)$/,
exclude : /node_modules/,
loader : 'babel-loader'
}, {
test : /\.(html)$/,
use : {
loader : 'html-loader',
options : {
attrs : [':data-src']
}
}
}]
},
devtool : 'source-map',
mode : 'development'
};
这是./src/serializer.js
文件代码:
import JsonSerializer from './serializers/JsonSerializer'
export {
JsonSerializer, /* other exports*/
}
答案 0 :(得分:2)
我猜这个类的文件名为ls-serializer.ts
。
您必须像这样使用它:
import JsonSerializer from './ls-serializer'
JsonSerializer.toJson(...)
或者您可以避免使用default
:
// ls-serializer.ts
export class JsonSerializer {
static toJson(node) { /* some code */ }
}
并像这样导出类:
import {JsonSerializer} from './ls-serializer'
JsonSerializer.toJson(...)
答案 1 :(得分:0)
我发现了问题,这有点可怜...
在我的代码中,toJson方法被命名为toJSON
,其首字母大写...在驼峰的情况下,在我的打字稿声明文件中。