[英]dyld: Symbol not found: _napi_module_register
昨晚讓我的節點與 VS Code 調試器一起工作沒問題。 除了安裝 npm mysql 包之外,我沒有觸及任何東西。
我今晚回來並拋出這個錯誤:
Debugger listening on [::]:49952
dyld: lazy symbol binding failed: Symbol not found: _napi_module_register
Referenced from: /Users/adamsawyers/node_modules/bufferutil/prebuilds/darwin-
x64/node-napi.node
Expected in: flat namespace
dyld: Symbol not found: _napi_module_register
Referenced from: /Users/myusername/node_modules/bufferutil/prebuilds/darwin-
x64/node-napi.node
Expected in: flat namespace
顯然,我安裝的 n(npm 中的節點版本處理包)以某種方式被破壞了。 我的研究告訴我 napi_module_register 是 n 包的一部分,但我不確定它是如何搞砸的,尤其是因為我昨晚讓它工作了。
我嘗試重新安裝我的節點包,重新安裝 n,重建項目文件結構,甚至重新啟動我的計算機。 到目前為止,一切都沒有奏效。
有什么建議?
顯然 VS 代碼不喜歡 nodejs 的 v6.10.3,我正在運行它以在 AWS 中創建 lambda 函數(即 AWS 指定的版本)
我使用 N 包來管理我的節點版本。 在 2018 年 7 月 25 日切換到最新版本 10.7.0(命令:sudo n latest)並在 VS 代碼中重新運行調試器后,它運行良好
我仍然不確定是什么原因,但希望其他人發現這個解決方案有幫助
這個確切的錯誤發生在我身上,因為:
socket.io
在 Node 上運行
ws
(Node 上的 websockets)這是一個糟糕的解決方案,但至少我讓它起作用了。
經過一番研究,我沒有找到很好的解決方案。 但是,仔細查看源代碼會發現index.js
旁邊有一個fallback.js
,它實現了與本機構建相同的功能,但不需要構建。 這可能會顯着減慢速度,但至少它有效:
yarn add module-alias
node -r fallbacks.js
):// fallbacks.js
const moduleAlias = require('module-alias');
const dependencyRoot = getDependencyRoot(); // whatever is your root folder, maybe __dirname + '..'
moduleAlias.addAlias('bufferutil', dependencyRoot + '/node_modules/bufferutil/fallback.js');
moduleAlias.addAlias('utf-8-validate', dependencyRoot + '/node_modules/utf-8-validate/fallback.js');
// run actual code here...
PS:就我而言,為了讓ws
能夠在 Node 7 上運行,我還必須對它進行 babel,因為它使用的是現代語法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.