错误:模块没有自注册

时间:2016-09-30 06:34:24

标签: javascript node.js docker dockerfile npm-install

我有完全相同的错误,说

at bindings (/node_modules/pg-native/node_modules/libpq/node_modules/bindings/bindings.js:76:44)  

这可能类似于:
Error: Module did not self-register.
但不同的是,我使用docker来构建图像,所以我不可能返回并删除node_modules并为每个容器再次执行npm install。
有更优雅的解决方案吗?

2 个答案:

答案 0 :(得分:0)

Docker的一个优点是,升级图像和更换容器应该很容易。如果你有一堆Node应用程序都是从同一张图片开始的:

try {
    File file = new File ("c:/new-file.txt");
    if(file.createNewFile()) {
        System.out.println("Successful created!");
    }
    else {
        System.out.println("Failed to create!");
    }
}
catch (IOException e) {
    e.printStackTrace();
}

然后您只需要重建图像,他们将使用最新版本的Node基本图像(当前具有NPM FROM node )。在非生产环境中,只需停止容器并从新映像运行新容器即可。在制作中,请查看rolling upgrades in swarm mode

理想情况下,您应该致力于自动化工作流程,您可以在其中提交更改,构建新映像并替换正在运行的容器。你不应该对运行容器进行任何维护 - 它们应该是一次性的。

答案 1 :(得分:0)

当我运行docker-compose时,我收到了这个错误。另外,在我的docker-compose中,我正在安装当前文件夹。为解决此问题,我使用npm rebuild重新构建了节点模块。