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文件)

相关推荐
花果山总钻风18 小时前
在 Debian 10.x 安装Chrome浏览器和ChromeDriver
运维·chrome·debian
艾莉丝努力练剑18 小时前
【优选算法必刷100题:专题五】(位运算算法)第033~38题:判断字符是否唯一、丢失的数字、两整数之和、只出现一次的数字 II、消失的两个数字
java·大数据·运维·c++·人工智能·算法·位运算
唐装鼠18 小时前
linux vscode解压版 AI账号无法登陆问题(浏览器无法打开vscode)
linux·运维·vscode
玉树临风江流儿18 小时前
炸鸡派-echoAI机器人项目解析
linux
一个平凡而乐于分享的小比特19 小时前
Linux最小系统详解
linux·最小系统
db_murphy19 小时前
学习篇 | 服务器的睿频
运维·服务器·学习
Levin__NLP_CV_AIGC19 小时前
Ubuntu部署Dufs
linux·运维·服务器·ubuntu·ssh
cly119 小时前
Ansible自动化(八):条件语句
运维·自动化·ansible
MrYang202019 小时前
Vcenter vsphere 登录报错
运维·vmware