我有一个Vue.js项目,我已经与Typescript和webpack集成了。一切都很棒。我正在添加一个简单的SNS消息服务,因此我集成了AWS SDK。一切似乎都很好,但显然,如果我使用它的一小部分,我不想捆绑整个AWS SDK。我试着遵循所有的建议无济于事。
我希望能够做到以下几点:
import { SNS } from 'aws-sdk/clients/sns';
但是我收到了错误
... node_modules / aws-sdk / clients / sns“'没有导出成员'SNS'。
import { SNS } from 'aws-sdk'
完全正常(但是我留下了5MB +缩小的构建文件,因为它包含了整个sdk)。
我可以使用AWS SDK构建器工具,只需下载SNS服务,将该文件添加到我的目录树,然后从该文件导入SNS
。这也很好,是我目前最好的解决方法。但现在我被迫在npm之外维护一个文件,这不是很好。
以下是一些可能有用的额外信息。
我的ts.config.json
文件看起来像
{
"compilerOptions": {
"outDir": "./inc/dist/ts-built/",
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"strict": true,
"target": "es5",
"module": "es2015",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"moduleResolution": "node"
},
"include": [
"./inc/src/**/*"
],
"exclude": [
"node_modules"
]
}
我的webpack.config.js
文件的相关部分目前看起来像是
var path = require("path");
var webpack = require('webpack');
module.exports = {
//context: path.resolve(__dirname, "./inc/src"),
resolve: {
extensions: ['.ts', '.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js'
}
},
entry: {
main: './inc/src/search/main.ts'
},
output: {
publicPath: '/inc/dist',
path: path.resolve(__dirname, './inc/dist'),
filename: '[name].build.js'
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
}
},
{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules/,
options: {
appendTsSuffixTo: [/\.vue$/],
}
},
{
test: /\.json$/,
loader: 'json-loader'
}
]
}
};