2017-03-02 24 views
0

我升级了我的节点版本。 npm rebuild和删除我的node_modules目录似乎不适用于我重建我的C++插件。我仍然收到此错误:如何删除所有安装/构建的npm C++插件?

Error: The module '[...]/node_modules/node-expat/build/Release/node_expat.node' 
was compiled against a different Node.js version using 
NODE_MODULE_VERSION 46. This version of Node.js requires 
NODE_MODULE_VERSION 51. Please try re-compiling or re-installing 

,我认为这将是很好,只是吹走所有的C++插件(或者也许只是这一个,如果你能瞄准他们),这可能会解决我的问题。任何快速简单的方法来做到这一点?

+1

如果你升级到7.7,那么这个版本有一个已知的问题,它会阻止所有的本地模块编译。您需要升级到7.7.1才能修复它。 – rossipedia

+0

这样做了,谢谢。如果你留下一个答案,我可以接受它 – cgsd

+0

是的,当然可以。 – rossipedia

回答

1

节点最近发布的版本7.7,很快发现它有一个错误,阻止所有本地模块被编译。

不久之后他们发布了一个补丁v7.7.1,它应该可以解决这个问题。我猜你已升级到7.7,所以更新安装到7.7.1应该解决这个问题。

0

的情况下,npm update不会帮助(这意味着,由于某种原因,它不会重新编译模块,因为这是应该做的),进入到模块目录,并与make clean && makenpm rebuild/npm rb手动重新编译。这是解决此类版本冲突的常用方法 - 或者至少获得有关原因的更详细信息。删除并重新安装有问题的模块也是值得一试的。没有V8 nodeJS可以做的更少,而不是在加载的时候(删除它可能完全削弱了可能性;尽管原来的问题不会建议这样做)。

npmjs.com的文件中明确指出:

This is useful when you install a new version of node, and must recompile all your C++ addons with the new binary.

......所以这是默认的程序,在更新的情况。