Mailchimp和Node.js与typescript noob问题:导入与要求

fd3cxomn  于 2023-05-17  发布在  Node.js
关注(0)|答案(4)|浏览(183)

我正在创建一个应用程序,使用Mailchimp发送某些交易电子邮件。
这里有很好的文档:https://mailchimp.com/developer/api/transactional/messages/send-using-message-template/
但是我使用的是typescript,所以这行:

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@gmail.com",
                name: "Test",
                type: "to"
            }
        },
        async:true
    };
    return await mailchimp.messages.sendTemplate(mcbody);
}
yh2wf1be

yh2wf1be1#

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

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

这直接拉入javascript文件,然后第二行初始化对象。
祝大家好运!

0vvn1miw

0vvn1miw2#

截至2022年3月,这些类型已添加到DefinitelyTyped中,并且可以通过运行
npm install --save-dev @types/mailchimp__mailchimp_transactional

1wnzp6jl

1wnzp6jl3#

我在node/Typescript项目中遇到了同样的问题,但这对我来说很有效:
const mailchimp = require('@ mailchimp/mailchimp_marketing')
public class MailchimpServices {

constructor() {

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

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

}

xfb7svmp

xfb7svmp4#

在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();

相关问题