运行时.ImportModuleError 错误:找不到模块 'axios/lib/utils' 无服务器

6
我正在使用Serverless框架,后端是node.js。我有几个微服务,其他所有服务都正常工作,但是现在我创建了一个新的微服务,在其中没有使用Axios,但仍然在控制台中抛出错误。 另外一个问题是,在我的本地系统中它可以完美地运行,但是当我将相同的代码推到服务器上时,就开始出现问题。 project directory image 这是引发错误的示例代码。
    const { IamAuthenticator } = require('ibm-watson/auth');
    const NaturalLanguageUnderstandingV1 = require('ibm-watson/natural-language-understanding/v1');

    async function textAnalyse(req, res) {
      const naturalLanguageUnderstanding = new NaturalLanguageUnderstandingV1({
      version: '2019-07-12',
      authenticator: new IamAuthenticator({
        apikey: 'API KEY'
      }),
    url: 'https://URL/natural-language-understanding/api'
    });

    const analyzeParams = {
       'text': HtmlToText.fromString('Test text here'),
       'features': {
         'entities': {
           'sentiment': true,
           'limit': 100
          }
        }
    };

    const analysis = await naturalLanguageUnderstanding.analyze(analyzeParams);

    // prepare the response object
    res.send({ analysis: analysis });
  }

AWS CloudWatch错误

{ "errorType": "Runtime.ImportModuleError", "errorMessage": "错误:找不到模块 'axios/lib/utils'", "stack": [ "Runtime.ImportModuleError: 错误:找不到模块 'axios/lib/utils'", " at _loadUserApp (/var/runtime/UserFunction.js:100:13)", " at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)", " at Object.<anonymous> (/var/runtime/index.js:45:30)", " at Module._compile (internal/modules/cjs/loader.js:778:30)", " at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)", " at Module.load (internal/modules/cjs/loader.js:653:32)", " at tryModuleLoad (internal/modules/cjs/loader.js:593:12)", " at Function.Module._load (internal/modules/cjs/loader.js:585:3)", " at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)", " at startup (internal/bootstrap/node.js:283:19)", " at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)" ] }
2个回答

1
我找到了解决方法。 当我们从Lambda调用第三方API时,需要在内部实现Axios。因此,您需要创建一个文件夹,其中包含具有依赖项的package.json文件。
"dependencies": {
    "axios": "^0.19.2"
  }

然后在AWS UI的功能中添加层,左侧菜单 添加层的步骤

然后将该层添加到您的函数中 将层添加到函数中

现在,通过上述操作,问题将得到解决,并且Axios依赖项已成功地单独添加到微服务中。


2
谢谢您。我已经尝试过了。我实际上找到了这个链接 https://medium.com/@anjanava.biswas/nodejs-runtime-environment-with-aws-lambda-layers-f3914613e20e 但我仍然遇到错误 "errorType": "Runtime.ImportModuleError", "errorMessage": "Error: Cannot find module 'axios'\nRequire stack:\n- /var/task/index.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js", "trace": [ "Runtime.ImportModuleError: Error: Cannot find module 'axios'",请问有什么想法吗? - aginsburg

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接