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 中的列表/受众
Visual Studio 与 WebStorm 中的 Typescript 编译 - 两者都使用 Node.js 进行编译吗?