🏸
nodeJsFunctionで"no loader is configured for ".node" files"
内容
nodeでsftpしたいなあと思い、ssh2-sftp-clientを用いたlambdaをCDKのnodeJsFunction(別名 神)でデプロイしようとしたところ、以下のエラーが出ました
Bundling asset CdktestStack/testfunc/Code/Stage...
✘ [ERROR] No loader is configured for ".node" files: lib/testfunc/node_modules/cpu-features/build/Release/cpufeatures.node
lib/testfunc/node_modules/cpu-features/lib/index.js:1:24:
1 │ const binding = require('../build/Release/cpufeatures.node');
╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
✘ [ERROR] No loader is configured for ".node" files: lib/testfunc/node_modules/ssh2/lib/protocol/crypto/build/Release/sshcrypto.node
lib/testfunc/node_modules/ssh2/lib/protocol/crypto.js:30:20:
30 │ binding = require('./crypto/build/Release/sshcrypto.node');
╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 errors
解決策
nodeJsFunctionに以下の設定を追加
bundling: {
loader: {
'.node': 'file'
}
},
参考
このIssueで紹介されているworkaroundや、
new NodejsFunction(this, 'testfunc', {
entry: 'lib/testfunc/index.ts',
bundling: {
nodeModules: ['ssh2'],
}
});
大本のesbuild側のissueで紹介されているプラグイン追加では駄目でした。
最終的に怪しそうなloaderオプションにたどり着いたところ、GitHub Copilotが提案してくれた上記解決策でうまくいきました。笑
Discussion