在Jenkins中通过Shell执行NPM命令出现语法错误,求解答
问题原因分析与解决办法
我来帮你拆解下这个报错的根源,其实问题出在你对Shell命令的使用逻辑上:
你当前的Jenkins构建命令是:
#!/usr/local/bin/node Users/Shared/Jenkins/Home/workspace/kaleidoscope/npm test
这里的核心错误是:node是用来运行JavaScript文件的工具,不是用来调用npm这类独立命令行工具的。当你用node去执行这条命令时,它会把后面的npm当成一段JavaScript代码里的标识符,但这个标识符既没有定义也不符合JS语法规则,所以就抛出了SyntaxError: Unexpected identifier的错误。
正确的解决方式
你只需要直接调用npm命令即可,因为npm本身就是一个独立的可执行CLI工具,不需要通过node来启动。
修改后的Jenkins Shell命令可以这样写:
#!/bin/bash # 先切换到项目目录(如果Jenkins workspace没自动定位的话) cd Users/Shared/Jenkins/Home/workspace/kaleidoscope # 直接执行npm测试命令 npm test
如果Jenkins的构建工作区已经默认指向你的项目目录,甚至可以简化成一行:
npm test
补充说明
如果你的环境里npm命令找不到(提示command not found),可以先通过which npm命令查看它的完整安装路径,然后用绝对路径调用,比如:
/usr/local/bin/npm test
不过正常情况下,只要Node.js安装配置正确,npm会被加入系统环境变量,直接调用就能生效。
内容的提问来源于stack exchange,提问作者Lyserty
相关产品推荐
相关产品推荐

