“找不到给定文件的模块根目录:\”/var/task/index.js\”AWS lambda libxmljs2-xsd webpack

问题描述

我使用 webpack 为 AWS lambda 捆绑代码,该代码按预期运行,除非我包含特定库:libxmljs2-xsd 和 lambda throws:

"errorType": "Error","errorMessage": "Could not find module root given file: \"/var/task/index.js\". Do you have a `package.json` file? ","stack": [
        "Error: Could not find module root given file: \"/var/task/index.js\". Do you have a `package.json` file? ","    at Function.getRoot (/var/task/index.js:5286:13)","    at bindings (/var/task/index.js:5157:32)","    at Object../node_modules/libxmljs2/lib/bindings.js (/var/task/index.js:7094:92)","    at __webpack_require__ (/var/task/index.js:16311:42)","    at Object../node_modules/libxmljs2/index.js (/var/task/index.js:7042:18)","    at Object../node_modules/libxmljs2-xsd/index.js (/var/task/index.js:6954:16)","    at Object../src/validateXML.js (/var/task/index.js:16099:13)","    at __webpack_require__ (/var/task/index.js:16311:42)"
    ]

我在 S/O 上阅读了另一个类似的问题,但对于这个问题,答案似乎不正确。

我实际上设法让它运行(这不是一个干净的答案,因此我没有作为答案包含在内)并且它仍然需要为其他遇到此问题的人回答。

它似乎需要任何仅包含 {} 的 package.json 就可以了,在 /dist 文件夹和来自节点模块的 2 个二进制文件中完整运行:

我的 /dist 文件夹现在看起来像:

/dist
   /someHandler
      index.js
   /anotherHandler
      /build
         node-libxml-xsd.node
         xmljs.node
      index.js
      package.json

node-libxml-xsd.node 二进制文件位于 node_modules/libxmljs2-xsd/build 中,xmljs.node 位于 node_modules/build/Release 中

所以它现在确实与变通解决方案一起运行,但我不确定为什么 webpack 没有正确捆绑这个模块

非常感谢任何帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)