我将用 ExpressJs 开发的系统复制到生产服务器。 我的系统使用 HTTPS (SSL)。
当返回 400、403、404 或故意这样的某些代码时,它会使用 JSON 正确响应。
当返回应该是200时,节点在控制台中显示错误“非法指令(核心转储)”并破坏了应用程序。
看来您复制了
node_modules
,而不是移动其他所有内容并运行 npm install
来安装依赖项。
更新:现在,在您发布答案后,我发现情况确实如此。
问题在于某些模块已编译二进制组件,无法在不同架构之间移动。它们每次都需要构建,因此您永远不应该复制
node_modules
目录。
但是,如果您确实复制了
node_modules
目录或者更新了系统中的 Node.js,那么您可以运行 node_modules
,而不是删除 npm install
并运行 npm rebuild
。 (感谢 mscdex 在评论中指出。)
我解决了问题,删除文件夹node_modules并运行npm install
帮助我的最终解决方案是将 Node 升级到最新的 LTS(在我的例子中,我使用 nvm),并使用
npm install -g npm
和 YARN npm install -g yarn
& npm upgrade -g yarn
升级 npm。
如果您使用
screen
或任何后台进程,请确保这些进程也使用最新的node、npm和yarn版本(这部分让我头疼了一个小时,希望其他人不会发生这种情况).