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

使用Twilio Serverless部署Node.js应用时遇模块找不到错误

Twilio Serverless部署Node.js应用时模块找不到错误

环境与代码结构

我的Node.js应用文件夹结构如下:

functions
├── chunk_text.js
├── gpt_handler.js
├── hello-world.js
├── make_call.js
├── pre-scraping.js
├── private-message.js
├── read_scraped.js
├── respond.js
├── sms
│   └── reply.protected.js
├── transcribe.js
└── vector_db.js

respond.js核心代码:

const axios = require('axios');
const { getRelevantContext } = require('./vector_db');
const { createGPT4Response } = require('./gpt_handler');

// Define the main function for handling requests
//...

vector_db.js核心代码:

const { Pinecone } = require('@pinecone-database/pinecone');
const { embedText } = require('./gpt_handler');

// Initialize Pinecone
//...
module.exports = { getRelevantContext };

操作步骤

  • 使用twilio serverless:deploy部署应用
  • 使用node functions/make_call.js运行应用
  • 通过curl发送POST请求:
curl -X POST http://localhost:3000/make_call \
// -H "Content-Type: application/json" \
// -d '{"myNumber": "+mynumber"}'

错误现象

请求成功调用/transcribe接口,但调用/respond接口时失败,错误日志:

{
    "message": "Cannot find module './vector_db'\nRequire stack:\n- /var/task/handlers/ZN4b9ac101952f555dd0714e7598bece55.js\n- /var/task/node_modules/runtime-handler/index.js\n- /var/task/runtime-handler.js\n- /var/runtime/index.mjs",
    "name": "Error",
    "stack": "Error: Cannot find module './vector_db'\nRequire stack:\n- /var/task/handlers/ZN4b9ac101952f555dd0714e7598bece55.js\n- /var/task/node_modules/runtime-handler/index.js\n- /var/task/runtime-handler.js\n- /var/runtime/index.mjs\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1140:15)\n    at Module._load (node:internal/modules/cjs/loader:981:27)\n    at Module.require (node:internal/modules/cjs/loader:1231:19)\n    at Module.twilioRequire [as require] (/var/task/node_modules/runtime-handler/src/dependency.js:28:21)\n    at require (node:internal/modules/helpers:177:18)\n    at Object.<anonymous> (/var/task/handlers/ZN4b9ac101952f555dd0714e7598bece55.js:2:32)\n    at Module._compile (node:internal/modules/cjs/loader:1364:14)\n    at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)\n    at Module.load (node:internal/modules/cjs/loader:1203:32)\n    at Module._load (node:internal/modules/cjs/loader:1019:12)"
}

已确认respond.js与vector_db.js在同一目录下,无拼写或大小写错误。

解决方案

  1. 配置Twilio打包包含依赖文件
    Twilio Serverless默认单独打包每个函数,若存在间接引用或循环引用,可能遗漏依赖文件。在项目根目录创建.twilioserverlessrc文件,手动指定respond.js需要包含的文件:
{
  "functions": {
    "respond.js": {
      "include": ["vector_db.js", "gpt_handler.js"]
    }
  }
}
  1. 修正模块引用路径
    将相对路径补充完整后缀,或改用基于项目根目录的绝对路径:
// respond.js中
const { getRelevantContext } = require('./vector_db.js');
// 或使用绝对路径
const { getRelevantContext } = require(`${process.cwd()}/functions/vector_db.js`);
  1. 排查部署环境路径差异
    在respond.js中添加日志打印当前目录,确认部署后路径基准变化:
console.log('Current directory:', __dirname);
  1. 清理缓存重新部署
    执行twilio serverless:deploy --clean清理旧打包缓存,再重新部署应用。

内容的提问来源于stack exchange,提问作者Rahul Poddar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:40:17