【问题标题】:How to include nodejs modules in sub directory如何在子目录中包含nodejs模块
【发布时间】:2019-09-24 19:24:19
【问题描述】:

对于 AWS Lambda 层,我有一个这样的目录结构。

main > nodejs > node_modules

在上传到 AWS 之前,我有一个 test.js 文件来测试功能。是否可以将我的test.js 文件放在Main 文件夹中而不是nodejs 文件夹中,并且仍然让它在nodejs 文件夹中拾取模块?

我问是因为您压缩了 nodejs 文件夹以上传 AWS Lambda 层,但我不想将我的 test.js 文件包含在存档中。

更新:下面的答案帮助我找到了解决方案。您只需在 require 中输入模块的完整路径即可。

require('./nodejs/node_modules/my_module');

【问题讨论】:

  • 您使用什么工具或命令来归档nodejs 文件夹?
  • 我只是从 Mac 上的 Finder 中压缩它,然后再移出 test.js 文件。
  • 使用 tar 命令压缩文件夹 - tar --exclude='./nodejs/test.js' -zcvf nodejs_layer.zip ./nodejs
  • 不错!谢谢你的提示。我不知道我也可以那样做。

标签: javascript node.js aws-lambda-layers


【解决方案1】:

在运行test.js时设置NODE_PATH环境变量

NODE_PATH='yourFolder'/node_modules

source

【讨论】:

  • 感谢您的链接!它帮助我找到了解决方案。我没有意识到像require('./nodejs/node_modules/my_module') 这样输入模块的完整路径那么简单。
【解决方案2】:

一种方法是加载脚本并使用--eval 标志执行它:

cd nodejs
node --eval "$(cat ../test.js)"

【讨论】:

    猜你喜欢
    • 2012-05-26
    • 2020-11-17
    • 2023-03-29
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多