几天来我一直在尝试让一个简单的dockerized应用程序在AWS上运行,它在本地运行得很好,但是在AWS EC2、Amazon Linux AMD上,我得到了这个错误:它找不到node_expat的绑定。docker构建在我的Ubuntu 22.04 docker桌面上运行得很好,运行得很好,但是在AWS服务器上的Ubuntu 22.04上,我在尝试运行container时遇到了这个错误--构建没有错误!我已经尝试了所有我能找到的东西,希望其他人也遇到过这个问题。我甚至尝试了节点14、16和18,都有同样问题
exited with code 1
/usr/src/nodepp/node_modules/bindings/bindings.js:135
throw err;
^
Error: Could not locate the bindings file. Tried:
→ /usr/src/nodepp/node_modules/node-expat/build/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/build/Debug/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/build/Release/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/out/Debug/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/Debug/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/out/Release/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/Release/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/build/default/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/compiled/14.20.1/linux/x64/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/addon-build/release/install-root/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/addon-build/debug/install-root/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/addon-build/default/install-root/node_expat.node
→ /usr/src/nodepp/node_modules/node-expat/lib/binding/node-v83-linux-x64/node_expat.node
at bindings (/usr/src/nodepp/node_modules/bindings/bindings.js:126:9)
at Object.<anonymous> (/usr/src/nodepp/node_modules/node-expat/lib/node-expat.js:4:34)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:101:18)
at Object.<anonymous> (/usr/src/nodepp/node_modules/xml2json/lib/xml2json.js:1:13)
at Module._compile (internal/modules/cjs/loader.js:1085:14) {
tries: [
'/usr/src/nodepp/node_modules/node-expat/build/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/build/Debug/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/build/Release/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/out/Debug/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/Debug/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/out/Release/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/Release/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/build/default/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/compiled/14.20.1/linux/x64/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/addon-build/release/install-root/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/addon-build/debug/install-root/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/addon-build/default/install-root/node_expat.node',
'/usr/src/nodepp/node_modules/node-expat/lib/binding/node-v83-linux-x64/node_expat.node'
]
}
1条答案
按热度按时间sczxawaw1#
当然,经过几天的废话,我想明白了。为任何其他不幸的人发帖。我的Docker文件看起来基本上像
这里的关键是将WORKDIR保留到最后。Docker仍然会缓存WORKDIR,即使你在构建过程中指定不缓存,太神奇了!另外,npm rebuild node-expat也是克服上述错误的关键。这在一些系统上是个怪癖。