You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Twilio Functions中引入私有npm包作为依赖模块

Fixing "Failed to find the @scope/module_name package" in Twilio Functions with AWS CodeArtifact

我之前帮人解决过类似的问题,你的核心痛点在于:Twilio Functions的构建环境没办法访问AWS CodeArtifact里的私有包——你本地执行的aws codeartifact login只在自己机器上生成了认证凭证,Twilio的服务器根本看不到这些配置。下面是一步步的解决方案:

Step 1: Generate a valid AWS CodeArtifact authorization token & get your registry URL

首先得拿到能在Twilio环境中用的认证令牌,以及确认私有仓库的registry地址:

  • 运行这条命令生成令牌(替换所有占位符为你的实际信息):
    aws codeartifact get-authorization-token --domain {DOMAIN_NAME} --domain-owner {AWS_ACCOUNT_ID} --query authorizationToken --output text
    
    注意这个令牌有效期只有12小时,过期后需要重新生成。
  • 你的registry URL格式固定为:
    https://{DOMAIN_NAME}-{AWS_ACCOUNT_ID}.d.codeartifact.{REGION}.amazonaws.com/npm/{REPO_NAME}/
    
    把{DOMAIN_NAME}、{AWS_ACCOUNT_ID}、{REGION}、{REPO_NAME}替换成你自己的参数。

Step 2: Add a .npmrc file to your Twilio Functions project

Twilio Functions允许在项目根目录添加.npmrc文件来配置npm仓库,这是让它能拉取私有包的关键。创建这个文件,推荐用环境变量方式配置(更安全):

先打开Twilio Functions控制台的Environment Variables页面,添加以下变量:

  • CODEARTIFACT_DOMAIN = 你的CodeArtifact域名
  • CODEARTIFACT_ACCOUNT_ID = 你的AWS账号ID
  • CODEARTIFACT_REGION = 你的AWS区域
  • CODEARTIFACT_REPO = 你的CodeArtifact仓库名
  • CODEARTIFACT_AUTH_TOKEN = 刚才生成的认证令牌

然后你的.npmrc内容填写:

@{your-scope}:registry=https://${CODEARTIFACT_DOMAIN}-${CODEARTIFACT_ACCOUNT_ID}.d.codeartifact.${CODEARTIFACT_REGION}.amazonaws.com/npm/${CODEARTIFACT_REPO}/
//${CODEARTIFACT_DOMAIN}-${CODEARTIFACT_ACCOUNT_ID}.d.codeartifact.${CODEARTIFACT_REGION}.amazonaws.com/npm/${CODEARTIFACT_REPO}/:_authToken=${CODEARTIFACT_AUTH_TOKEN}
//${CODEARTIFACT_DOMAIN}-${CODEARTIFACT_ACCOUNT_ID}.d.codeartifact.${CODEARTIFACT_REGION}.amazonaws.com/npm/${CODEARTIFACT_REPO}/:always-auth=true

Option B: Hardcoded (only for temporary testing)

如果只是临时测试,可以直接把值填进去,但绝对不要把这个文件提交到版本控制:

@{your-scope}:registry=https://{DOMAIN_NAME}-{AWS_ACCOUNT_ID}.d.codeartifact.{REGION}.amazonaws.com/npm/{REPO_NAME}/
//{DOMAIN_NAME}-{AWS_ACCOUNT_ID}.d.codeartifact.{REGION}.amazonaws.com/npm/{REPO_NAME}/:_authToken={YOUR_AUTH_TOKEN}
//{DOMAIN_NAME}-{AWS_ACCOUNT_ID}.d.codeartifact.{REGION}.amazonaws.com/npm/{REPO_NAME}/:always-auth=true

Step 3: Verify your package.json dependencies

确保package.json里正确添加了私有包的依赖,比如:

"dependencies": {
  "@scope/module_name": "^1.0.0",
  // 其他依赖...
}

版本号必须和CodeArtifact仓库里的包版本完全匹配,否则Twilio还是会找不到。

Step 4: Deploy and test

现在部署你的Twilio Functions,应该不会再出现依赖验证失败的错误了。如果还是有问题,检查这几点:

  • 环境变量有没有拼写错误(比如区域名、账号ID)
  • 认证令牌是否过期,重新生成一个试试
  • registry URL是否正确,可以在本地用npm install @scope/module_name --registry={REGISTRY_URL}测试能否拉取
  • 私有包的scope和名称是否和CodeArtifact里的完全一致(npm的包名是大小写敏感的!)

内容的提问来源于stack exchange,提问作者Aravintharaj G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 21:27:35