Node.js 将本地导入根与AWS Lamba一起使用
我正在用TypeScript构建一些AWS Lambda函数,TS源代码在Node.js 将本地导入根与AWS Lamba一起使用,node.js,amazon-web-services,aws-lambda,node-modules,es6-modules,Node.js,Amazon Web Services,Aws Lambda,Node Modules,Es6 Modules,我正在用TypeScript构建一些AWS Lambda函数,TS源代码在src/中,传输JS在build/中 我的问题是,我想摆脱到处都是恼人的相对导入路径,例如import Foo from'../../../../../utils/Foo/bar'。在诸如Express之类的其他应用程序中,我通常设置一个节点\u PATH=build或类似设置,以便可以从“utils/Foo/bar”导入Foo。我还可以将ts节点与node\u PATH=src-ts节点一起在本地使用 但是,我发现使用A
src/
中,传输JS在build/
中
我的问题是,我想摆脱到处都是恼人的相对导入路径,例如import Foo from'../../../../../utils/Foo/bar'
。在诸如Express之类的其他应用程序中,我通常设置一个节点\u PATH=build
或类似设置,以便可以从“utils/Foo/bar”导入Foo。我还可以将ts节点
与node\u PATH=src-ts节点
一起在本地使用
但是,我发现使用AWS Lambda添加自定义本地模块根路径非常繁琐:
设置为运行时(包括NODE_PATH
)所在的aws sdk
文件夹,以及任何层,例如NODE_modules
。如果我使用/opt/nodejs/node12/NODE_modules/:/opt/nodejs NODE_modules:$LAMBDA_runtime_DIR/NODE_modules
或NODE\u PATH=build
部署函数,我可以导入本地模块,但不能导入NODE\u PATH=/var/task/build
库。自定义NODE\u模块
与AWS Lambda的默认系统节点路径
似乎没有自动合并节点路径
- 我尝试更改
,将我的LAMBDA\u RUNTIME\u DIR
目录附加到它,但这是一个保留的只读环境变量build
可以在运行时进行变异,例如通过第一行代码进行变异,但现在影响模块加载器已经太晚了process.env
节点路径设置为/opt/nodejs/node12/NODE\u modules/:/opt/nodejs/NODE\u modules:/var/task/NODE\u modules:/var/task/build
。我不喜欢这种依赖关系,它还依赖于运行时、Node.JS版本等
是否有一个合适的解决方案可以在不破坏默认路径或依赖硬编码路径的情况下附加本地自定义模块根路径?您可以使用像webpack
这样的捆绑程序。我就是这么做的。