Mailchimp 和 Node.js 与 typescript noob 问题:Import vs Require

Posted

技术标签:

【中文标题】Mailchimp 和 Node.js 与 typescript noob 问题:Import vs Require【英文标题】:Mailchimp and Node.js with typescript noob question: Import vs Require 【发布时间】:2021-03-16 15:31:01 【问题描述】:

我正在创建一个使用 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' is not a module in 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);

【问题讨论】:

您的问题似乎与您的标题无关。特别是,这个问题没有“导入与要求”方面。 问题是该模块没有安装在您尝试使用它的位置(在服务器上,对吗?),或者您的配置未设置为在任何位置查找模块 安装。 @T.J.Crowder 很好的接机thanx。我说,因为我相当确定我应该使用 Import 代替,但 mailchimp 文档没有指定如何做到这一点。我编辑了问题以包含它。我也安装了这个包,我还在本地运行这个 您当然不能像以前那样组合它们(使用require 进行导入,但使用export 声明进行导出)。您使用哪个是您的项目的选择,由您的项目选项控制。 @T.J.Crowder 关于如何正确导入它有什么建议吗? 【参考方案1】:

如果有人不幸遇到此问题,因为 Mailchip 的文档不适合打字稿设置,而您不确定如何使其“正常工作”,答案如下:

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

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

祝大家好运!

【讨论】:

那是你真正的钥匙吗?【参考方案2】:

我在 node/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);

【讨论】:

不适合我。它说“错误:找不到模块'@mailchimp/mailchimp_marketing'”

以上是关于Mailchimp 和 Node.js 与 typescript noob 问题:Import vs Require的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node.js 客户端库将查询参数添加到 mailchimp 请求

如何通过 Node JS 使用自己的库将联系人添加到 Mailchimp 中的列表/受众

无法向 MailChimp 提交数据

Visual Studio 与 WebStorm 中的 Typescript 编译 - 两者都使用 Node.js 进行编译吗?

有没有办法修复节点中的这个 Mailchimp API 错误?

如何在 node.js 中更改 jsonwebtoken 的标头