odoo-087 安装 npm (node ok npm not)

文章目录

  • 问题
  • 解决
    • [1. 尝试按官方安装](#1. 尝试按官方安装)
    • [2、按 AI 的卸载重装,验证跟odoo的依赖关系](#2、按 AI 的卸载重装,验证跟odoo的依赖关系)
      • [2.1 卸载 node 12](#2.1 卸载 node 12)
      • [2.2 先看下卸载后odoo是否正常使用](#2.2 先看下卸载后odoo是否正常使用)
      • [2.3 按官方步骤升级到node16](#2.3 按官方步骤升级到node16)
      • [2.4 再次查看odoo跟node的依赖](#2.4 再次查看odoo跟node的依赖)
  • 查了下node跟odoo的关系,仅参考

问题

odoo 的 owl 需要用到 npm 安装,npm 查看报错。

复制代码
node -v
v12.22.9
npm -v 

报错如下:

这个错误是因为您的 Node.js 版本过旧,不支持可选链操作符(?.)语法。错误信息显示在 signal-exit模块中遇到了这个语法问题。

复制代码
odoo@odoo-pc:~$ npm --version
(node:7859) UnhandledPromiseRejectionWarning: /usr/share/nodejs/signal-exit/dist/cjs/index.js:162
        const ev = opts?.alwaysLast ? 'afterExit' : 'exit';
                        ^

SyntaxError: Unexpected token '.'
    at wrapSafe (internal/modules/cjs/loader.js:915:16)
    at Module._compile (internal/modules/cjs/loader.js:963:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Module.require (internal/modules/cjs/loader.js:887:19)
    at require (internal/modules/cjs/helpers.js:85:18)
    at Object.<anonymous> (/usr/share/nodejs/gauge/lib/index.js:5:18)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
(node:7859) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:7859) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

查看 npm 的位置

复制代码
npmm --verbose同错
which npm 
/user/bin/npm


通过命令查看node和npm的位置

解决

1. 尝试按官方安装

还是因为node的版本过低导致nvm安装不成功。

2、按 AI 的卸载重装,验证跟odoo的依赖关系

2.1 卸载 node 12

  1. 移除系统自带的Node.js

    sudo apt remove --purge nodejs npm -y

    sudo apt autoremove -y

  2. 清理可能的残留文件

    sudo rm -rf /usr/local/bin/npm

    sudo rm -rf /usr/local/bin/node

    sudo rm -rf /usr/share/nodejs

    sudo rm -rf /usr/lib/node_modules

确认已经卸载

2.2 先看下卸载后odoo是否正常使用

尝试odoo是否可以正常使用,卸载前知道odoo18,17,13在正常使用,15-16的环境很久没有使用过了

odoo18 新搭建的环境,没安装模块,还可以正常启动和访问

odoo17 可以正常使用

odoo16 登录后,打开网页报错如下,点击菜单也会报错

odoo15 可以正常使用

odoo13 可以正常使用,控制台报错不影响使用

2.3 按官方步骤升级到node16

根据node 官网的安装步骤安装和截图如下(很顺畅)

复制代码
# 下载并安装 nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# 代替重启 shell
\. "$HOME/.nvm/nvm.sh"

# 下载并安装 Node.js:
nvm install 16

# 验证 Node.js 版本:
node -v # Should print "v16.20.2".

# 验证 npm 版本:
npm -v # Should print "8.19.4".

安装 nvm

nvm 安装 node 16

2.4 再次查看odoo跟node的依赖

再看odoo运行情况,只看有问题的几个版本的

odoo13 还是同样的问题,可能跟node 无关

odoo16 还是同样的问题,可能跟node 无关

还有一个问题,odoo在Firefox又打不开了,问题同上次的,解决如下
odoo-086 The page isn't redirecting properly

用的是隐私模式验证的。

安装好后,再 firebox 浏览器可以正常打开,不用隐私模式可以。

查了下node跟odoo的关系,仅参考

Odoo部分版本会使用Node.js,但并非核心依赖,主要用于前端资源编译(如Less/Sass预处理)。

不同版本对Node.js的需求和版本要求存在差异,以下是主要版本对应关系:

Odoo版本 是否使用Node.js 推荐Node.js版本 主要用途
9-11版 是(必需) 8.x-10.x(建议10.5+) Less CSS预处理
12-13版 可选(推荐) 10.x-12.x 前端开发工具链
14-16版 可选 12.x-14.x 前端构建、开发辅助
17-18版 可选 14.x-16.x(官方建议16.0+) 前端工具链、部分模块开发

核心说明:

  • Odoo 9-11版本:必须安装Node.js和npm来编译Less样式文件,否则前端界面无法正常显示。这是唯一将Node.js作为运行依赖的版本段。
  • Odoo 12及之后版本:从12.0开始,Odoo将CSS预处理器从Less切换到Sass(libsass-python),不再强制依赖Node.js运行环境。但Node.js仍可用于前端开发工具链(如自定义模块开发、调试等),属于开发依赖而非运行依赖。
  • 版本对应关系:上表为推荐版本范围,实际安装时可根据系统环境灵活选择。例如Odoo 17在Ubuntu 22.04上通常使用Node.js 16.x,但14.x或18.x也可能正常工作。生产环境建议选择Node.js LTS版本以确保稳定性。
  • 当前版本(2026年):Odoo 18官方文档建议Node.js 16.0+,主要用于前端开发工具链和部分第三方模块的构建过程,但系统核心运行不依赖Node.js 。

重要提示:如果仅部署标准Odoo系统(不进行前端定制开发),从Odoo 12开始完全可以不安装Node.js。如需开发自定义模块或使用某些第三方插件,则建议按对应版本安装Node.js环境。(如需查看官方最新版本要求,访问Odoo官方文档或GitHub仓库的requirements.txt文件)

相关推荐
梦到啥说啥20 分钟前
Linux网络编程:UDP网络协议
linux·网络协议·udp
无足鸟ICT2 小时前
【RHCA+】ipcrm命令(删除IPC资源)
linux
星恒随风2 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
Z21-X4 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生
dreams_dream4 小时前
微信小程序-使用npm包
微信小程序·小程序·npm
陈希1235 小时前
Linux 网络诊断工具实战:ping、curl、tcpdump、mtr、dig 用法详解
linux·网络·tcpdump
进击的荆棘5 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
刘大望6 小时前
不用买开发板:用 QEMU 走通嵌入式 Linux 全流程(三)存储与网络实地验证
linux·qemu·嵌入式linux·alpine
瑞雪兆丰年兮6 小时前
JavaWeb-day11-SpringBootWeb案例(文件上传)
java·运维·服务器·javaweb·oss
那明眸似水7 小时前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器