Jenkins共享库中如何在流水线脚本引用外部React组件的路径?
在React项目中使用Jenkins共享库时遇到路径问题,流水线脚本里引用组件总报错。我按以下方式写了组件引入:
import Header from './components/Header';
const App = () => (
<div>
<Header title="共享库测试"/>
<p>构建信息:{process.env.BUILD_NUMBER}</p>
</div>
);
export default App;
但运行时提示Cannot find module './components/Header'。已经确认文件结构没问题,Jenkinsfile里用了相对路径,也试过绝对路径都不行。是不是共享库的加载机制有特殊要求?应该怎么配置才能让流水线正确解析组件路径?
你在Jenkinsfile里写的nodejs构建脚本是不是漏了build步骤?React组件路径问题是你本地开发时的模块解析问题,跟Jenkins共享库没关系。共享库是用来放pipeline逻辑的,不是用来放React组件的。
你上面那段代码是React组件,应该在你的React项目里,而不是在Jenkinsfile里。Jenkinsfile里要写的是怎么构建这个React项目,比如:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
}
}
如果你真想在Jenkins共享库中引用React组件,那你得在共享库中配置npm支持,然后把React项目发布为npm包,再通过npm install来引入。直接用这个流程:
把React组件打包成npm包
在Jenkins共享库的package.json里加上这个包的依赖
在你需要的地方import * as Header from 'your-react-component'
共享库的加载机制没有特殊要求,是你用了错误的引入方式。你现在的写法是前端代码的引入方式,不是Node.js模块引入方式。