Mailchimp 和 Node.js 与打字稿菜鸟问题:导入与要求

问题描述 投票:0回答:5

我正在创建一个使用 Mailchimp 发送某些交易电子邮件的应用程序。

他们在这里有很棒的文档:https://mailchimp.com/developer/api/transactional/messages/send-using-message-template/

但是我使用打字稿,所以这行:

var mailchimp = require("mailchimp_transactional")("API_KEY");

不起作用,我收到以下错误:

Error: Cannot find module 'mailchimp_transactional'

我知道这是一件小事,但我根本不知道如何解决它。我发现一篇文章描述了在这里创建自己的类型文件:@mailchimp/mailchimp_marketing/types.d.ts'不是nodeJs中的模块

但是必须有一个更快更简单的解决方案。它还没有明确说明在这种情况下如何设置 API 密钥。

我尝试导入 @mailchimp/mailchimp_transactional 模块,但没有成功。 我当然也跑步了

npm install @mailchimp/mailchimp_transactional

任何帮助将不胜感激,这里有一个完整的示例,以防它有帮助。

var mailchimp = require("mailchimp_transactional")("API_KEY");

export const testSendEmailFromTemplate = async () => {
    let mcbody = {
        template_name: "my-template",
        template_content: [{
            name:"firstname",
            content:"INJECTED.BY.TEMPLATE.CONT.firstname"
        },
        {
            name:"surname",
            content:"INJECTED.BY.TEMPLATE.CONT.surname"
        }],
        message: {
            to:{
                email:"[email protected]",
                name: "Test",
                type: "to"
            }
        },
        async:true
    };
    return await mailchimp.messages.sendTemplate(mcbody);
}

node.js typescript import require mailchimp
5个回答
11
投票

如果有人不幸遇到这个问题,因为 Mailchip 的文档不适合打字稿设置,并且您不确定如何使其“正常工作”,这里就是答案:

const mailchimpFactory = require("@mailchimp/mailchimp_transactional/src/index.js");
const mailchimp = mailchimpFactory("PUTKEYHERE");

这会直接拉入 JavaScript 文件,然后第二行初始化对象。

祝大家好运!


3
投票

截至 2022 年 3 月,这些类型已添加到 DefinitelyTyped 并且可以通过运行来访问

npm install --save-dev @types/mailchimp__mailchimp_transactional


1
投票

我在节点/Typescript 项目中遇到了同样的问题,但这对我有用:


const mailchimp = require('@mailchimp/mailchimp_marketing')

导出类 MailchimpServices {

constructor() {

    mailchimp.setConfig({
        apiKey: '...',
        server: 'us5',
    });
}


async ping() {
    console.log('Start mailchimp ping!')
    const response = await mailchimp.ping.get();
    console.log(response);
}

}


0
投票

在 2023 年,使用 typescript 我发现可以这样做:

import * as mailchimp from '@mailchimp/mailchimp_marketing';

或者只是

import mailchimp from '@mailchimp/mailchimp_marketing';

如果 tsconfig 中有

esModuleInterop: true
。然后:

mailchimp.setConfig({ apiKey: 'your_key', server: 'us10' });
const result = await mailchimp.ping.get();

0
投票

对于那些将其与 React 一起使用的人,请先安装它

yarn add @mailchimp/mailchimp_transactional
yarn add @types/mailchimp__mailchimp_transactional -D

然后像这样使用

import mailchimp from '@mailchimp/mailchimp_transactional'

async function run() {
    const mctx = mailchimp('YOUR-KEY')
    const response = await mctx.users.ping()
    console.log(response)
}

run()
© www.soinside.com 2019 - 2024. All rights reserved.