使用Vite + React执行sudo npm run build构建生产环境失败求助
Vite + React生产构建报错:SyntaxError: Unexpected token {
问题场景
部署Vite + React项目时,执行sudo npm run build命令出现语法错误,具体报错信息如下:
/var/www/html/dev-sp-doc/node_modules/vite/bin/vite.js:2 import { performance } from 'node:perf_hooks' ^ SyntaxError: Unexpected token { at Module._compile (internal/modules/cjs/loader.js:723:23) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! sp-doc@0.0.0 build: `tsc && vite build` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the sp-doc@0.0.0 build script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
当前环境:Node v19.5.0,Vite ^3.2.5
问题原因
sudo会切换到root环境,使用系统默认的旧版Node,而非你当前用户安装的v19.5.0。旧版本Node不支持node:perf_hooks这种ES模块导入语法,导致出现语法错误。
解决方案
方案1:避免使用sudo执行构建
如果是目录权限问题导致需要sudo,先调整项目目录权限为当前用户所有:
sudo chown -R $USER:$USER /var/www/html/dev-sp-doc
之后直接执行构建命令:
npm run build
方案2:sudo下指定Node完整路径
先查看当前用户Node的安装路径:
which node
假设输出为/usr/local/bin/node,则用sudo指定该路径执行构建:
sudo /usr/local/bin/node /usr/local/bin/npm run build
方案3:统一系统Node版本
使用nvm等版本管理工具,将root用户和普通用户的Node版本统一升级到v19.5.0及以上,确保sudo环境下也使用兼容的Node版本。
内容的提问来源于stack exchange,提问作者louis yoong 0729
相关产品推荐
相关产品推荐

