我正在尝试运行以下示例: https://github.com/ceolter/ag-grid-react-example
(ag-grid反应实例)
但是,我没有做npm run
而是想在tomcat上运行它。怎么做?
答案 0 :(得分:7)
您可以在Tomcat上轻松部署任何静态文件。您链接的项目没有用于构建示例生产版本的脚本,因此您需要做的是:
npm install -g webpack
webpack --config webpack.config.standard.js --progress --colors --hot --inline
或webpack --config webpack.config.large.js --progress --colors --hot --inline
。它将创建dist
目录。webapps
目录中,为您的演示ag-grid
创建另一个目录。index.html
和dist
复制到ag-grid
。http://host:port/ag-grid
。答案 1 :(得分:4)
执行
npm run build
这将在项目树内的build
子文件夹中创建应用的可部署版本。您现在需要的是将index.html
及其所有朋友从此文件夹复制到用于提供静态文件的Tomcat目录中。这是Tomcat应用程序文件夹中的顶级。标准目录布局记录为here。
如here所述,构建真实的Web应用程序(.war)也非常简单。静态文件只驻留在存档的顶层,您还应该在存档内的WEB-INF / web.xml中配置默认页面。可以从Tomcat管理控制台部署此类应用程序。
答案 2 :(得分:0)
有不同的方法可以在Tomcat上部署React J.Deploy在tomcat或任何servlet容器中反应JS是一个挑战,有点棘手。我正在开发的应用程序中存在一个问题。我在我的应用程序中使用了BrowserRouter。
所以问题是代码中没有错误,但没有任何内容正在加载。我看到没有错误的白屏。我检查了控制台,看到它为我的一些捆绑的静态资源抛出了404.
注意到一个奇怪的行为,如果我在web pack dev服务器中运行应用程序,相同的代码工作正常,路由器也能正常工作。但是一旦我部署到tomcat,就没有观察到相同的行为。
如您所知,BrowserRouter使用HTML5历史记录API来保持您的UI与URL同步。例如,如果您使用带有/ todos / 42路由的React路由器,webpack开发服务器将正确响应localhost:3000 / todos / 42,但上面的生产版本不会。
Check out this link to understand the problem.
我们还可以更新package.json。
如果你想将它作为基于java的项目的一部分运行,那么你可以使用maven exec插件在exec参数中构建并运行 npm run build 。
答案 3 :(得分:0)
<html>
<head>
<title>Redux Counter Example</title>
</head>
<body>
<div id="root">
</div>
</body>
<script src="~/Scripts/frontend/dist/bundle.js"></script>
</html>
答案 4 :(得分:-1)
即使我没有使用Tomcat执行此操作,我也使用IIS进行了部署。所以你可以让方法适应Tomcat。
DefaultController.cs
public class DefaultController : Controller
{
// GET: Default
public ActionResult Index()
{
return View();
}
}
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "",
defaults: new { controller = "Default", action = "Index" }
);
routes.MapMvcAttributeRoutes();
}
}
Default.cshtml
<html>
<head>
<title>Redux Counter Example</title>
</head>
<body>
<div id="root">
</div>
</body>
<script src="~/Scripts/frontend/dist/bundle.js"></script>
</html>
&#13;