NodeJS无法解析某些节点模块

时间:2020-04-22 05:11:22

标签: node.js node-modules

我有一个具有以下目录结构的NodeJS项目,其中package.json文件位于我的根目录中,而NodeJS源代码和测试文件位于两个不同的子目录中。

enter image description here

注意:为了减少屏幕截图的大小,删除了大量软件包-通常,这不是node_modules /文件夹中的所有软件包。

您可以在屏幕快照中看到相关性,但这是我的package.json相关性列表:

{
  "name": "hello_world",
  "main": "src/lambda.js",
  "license": "MIT",
  "dependencies": {
    "aws-sdk": "^2.659.0",
    "jsonschema": "^1.2.6",
    "uuid": "^7.0.3"
  },
  "scripts": {
    "test": "mocha tests/unit/"
  },
  "devDependencies": {
    "chai": "^4.2.0",
    "mocha": "^6.1.4"
  }
}

AWS Lambda中正在使用Node代码,并且我已经将AWS开发工具包引入了项目。在编写的前几行代码中是必需的:

let AWS = require('aws-sdk');
let Configuration = require('./collectionConfiguration');
let Response = require('./response');
let App = require('./app');
//let uuid = require('uuid');

exports.handler = async (event, context) => {

    // Create the dependencies that the app requires
    let config = new Configuration();
    let sns = new AWS.SNS();

    try {
        if (event.body == null || event.body == "") {
            return new Response(422, null, "Request body is missing required fields.", null);
        }

        let projectRequest = JSON.parse(event.body);
        let app = new App();
        //return await app.run(projectRequest);        

    } catch (err) {
        console.log(err);
        return new Response(500, null, err, null);
    }

    return new Response(401, null, null, null);
};

我可以在本地运行代码并调用Lambda,而不会出现任何问题。如果我取消注释let uuid = require('uuid');,那么我会收到运行时错误:

错误:找不到模块'uuid'

我不确定为什么可以找到aws-sdk而不能找到uuid模块。我尝试了另一个模块jsonschema模块,但收到相同的错误。

我的理解是,Node将在文件系统的上游工作,以查找node_modules目录。它应该可以找到它,因为它只是源代码中的1个父目录。

如果我将node_modules文件夹移到src/文件夹中,则错误消失了,我可以使用模块了。我是否不了解node_modules /发现的工作原理?如何获取该应用程序以发现目录层次结构中更远的模块?

0 个答案:

没有答案