在 typescript/jquery/webpack 应用程序中使用 aws-sdk

庞培·马格努斯

你好,我最近发布了一个 typescript/jquery/webpack 应用程序。一切正常。我想将 aws-sdk 引入其中。我遵循了我用来导入其他库的模式,比如 '_' 可以工作。

import * as _ from '../node_modules/lodash-es/lodash';

当我去运行它时会发生什么是我收到一堆这样的错误:

ERROR in .../code-projects/.../tsconfig.json
error TS2318: Cannot find global type 'Number'.

ERROR in .../code-projects/.../tsconfig.json
error TS2318: Cannot find global type 'Object'.

ERROR in .../code-projects/.../tsconfig.json
error TS2318: Cannot find global type 'RegExp'.

ERROR in .../code-projects/.../tsconfig.json
error TS2318: Cannot find global type 'String'.

然后我按照打字稿aws-sdk 说明进行操作。

同样的结果。

导入 i us 如下:

import * as AWS from '../node_modules/aws-sdk/dist/aws-sdk';

并且 webstorm 没有抱怨并且自动完成工作。

如果有帮助,我的 webpack 也包含在内。

问题:将 aws-sdk 包含到此类框架中的正确方法是什么。

const webpack = require('webpack');
const path = require('path');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');


module.exports = {

    entry: [
        "bootstrap-webpack",
        './src/index.ts'
    ],

    module: {
        rules: [
            // the url-loader uses DataUrls.
            // the file-loader emits files.
            {
                test: /\.html$/,
                loader: 'raw-loader',
                options: {
                    minimize: true
                }
            },
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: 'babel-loader'
            },
            {test: require.resolve("jquery"), use: "imports-loader?$=jquery"},
            {
                test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/,
                loader: 'url-loader?limit=10000&mimetype=application/font-woff'
            },
            {test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream'},
            {test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader'},
            {test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml'},
            {
                test: /\.png$/,
                exclude: /node_modules/,
                loader: 'url-loader'
            },
            {
                test: /\.gif/,
                exclude: /node_modules/,
                loader: 'url-loader'
            },
            {
                test: /\.jpg/,
                exclude: /node_modules/,
                loader: 'url-loader'
            },
            {
                test: /\.css$/,
                exclude: /node_modules/,
                loader: "style-loader!css-loader"
            },
            {test: /\.ts$/, loader: 'ts-loader', exclude: /node_modules/},
            {
                test: /.json$/,
                loaders: ['json']
            }
        ]
    },
    resolve: {
        extensions: ['.js', '.ts']
    },
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
    },

    plugins: [

        new HtmlWebpackPlugin({
            template: './src/index.html',
            hash: true

        }),
        new webpack.LoaderOptionsPlugin({
            debug: true
        }),
        new CleanWebpackPlugin(['dist/*.*'], {})
    ]
};
庞培·马格努斯

我尝试了很多不同的结果。我已经到了可以编译我的项目的地步,但是在运行时所有构造函数和方法都会失败,因为它们不存在。我认为这是一个类型加载问题?甚至不确定如何正确描述它。

但是,在阅读了 typescript 模块和编译模块类型之后,我从这里得到了答案

这是一个组合;一篇来自文章,一篇来自评论:

先描述问题...

使用 aws-sdk 的预构建版本。使用它可以避开这些 require() 问题,因为所有依赖项都包含在一个文件中。

在 aws-sdk 节点模块中,预构建文件位于 dist/aws-sdk.js。您可以使用 require('aws-sdk/dist/aws-sdk') 导入它。

还有一个问题 - 预构建的文件不会导出任何变量,而只是将 AWS 添加到 window 对象。

以及我是如何让它工作的,因为将它添加到 window 对象不起作用。

import '../node_modules/aws-sdk/dist/aws-sdk';
declare const AWS: any;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

应用程序中使用的分析 SDK

在 React Web 应用程序中使用 paypalhere sdk

如何配置域/ DNS以在AWS中使用应用程序?

我设置了我的AWS密钥,它们显示在linux终端中,但是Rails 4应用程序找不到它们。使用aws-sdk和carrierwave-aws宝石

无法在Meteor中使用AWS-SDK

如何使用 aws-sdk for javascript 将图像从 iOS 应用程序(使用 Kony 构建)上传到 AWS S3?

使用AWS Java SDK的AWS计费信息

AWS配置使用AWS Java SDK获得

要使用哪个AWS SDK?

在Python AWS Lambda中使用AWS加密SDK

如何在Angular应用程序中使用Firebase Admin SDK?

我的应用程序中使用的AdMob SDK是否收集任何用户个人信息

可以在iOS中使用最新的SDK在应用程序中获取Facebook朋友列表

在 AWS 中使用 Celery 和 Redis、在 AWS RDS 中使用 DB 的 Flask 应用程序的 Docker 部署

使用AWS DynamoDB在Android应用程序中使用多个表

无法从 Internet 访问 AWS 中使用端口 3000 的 NodeJs 应用程序

是否应在Node.js + Koa应用程序中使用AWS SQS消息轮询?

可以在 EB 上的 Node/Express/React 应用程序中使用 AWS Cognito 吗?

AWS Facial Rekognition 尝试在 Android 应用程序中使用 BasicAWSCredentials 描述集合

如何获得AWS上的凭证?我必须使用AWS Cognito SDK还是AWS SDK?

阅读时适用于S3 Transfer Utility的AWS Android SDK应用程序出现异常

如何在 FireFox 插件(扩展)中使用 AWS JavaScript SDK

如何在AWS DynamoDb js sdk中使用begins_with?

在AWS EMR sdk中使用AddJobFlowStep的正确方法是什么?

如何在Javascript AWS-SDK中使用MFA?

如何在AWS Java SDK中使用IAM角色

如何在aws-sdk-mock中使用onCall?

在NodeJS中使用AWS-SDK调用本地Lambda

使用aws-sdk在Docker容器中运行Node应用