我试图在Node.js服务器上运行我的ui5页面。到目前为止,我已经创建了一个UI5项目,其中包含一个简单的index.html文件,调用我的其他ui5视图显示文本消息。当我在没有节点js的情况下运行它时它运行正常并向我显示消息。
我现在想要实现的是在我的节点服务器上运行它。所以我为我的节点配置了一个server.js文件,它启动正常。在那里,我调用了我的上述index.html文件。它调用它很好,但它内部给出一个错误,说sap未定义意味着它无法找到我的ui5资源,如sap-ui-core.js,从而错误。我不确定为什么它找不到它。
我使用eclipse创建了ui5项目,它为我提供了以下目录下的ui5资源,但即使我尝试将资源目录放在web内容目录下,也无法找到它。
手动放入资源目录后:
以下是我的index.html的样子:
它是否与我定义的资源根有关,或者如果您可以建议我如何使其工作。
急切等待你的回复。
谢谢, AW
添加到cschuff响应:
您好,感谢您花时间帮助我。是的,我的应用程序命名空间是不同的,绝对不是sap.ui的东西。虽然我已经找到了解决这个问题的方法,但我仍然希望能够让它发挥作用,因为它更清洁。我现在使用它的方式是完全创建一个单独的节点项目,然后逐渐添加我的UI5片段,并且通过众神恩典它现在运行正常。但是我不确定为什么同样的概念,如果我申请在eclipse中创建的UI5项目,它给我的sap是未定义的错误。
答案 0 :(得分:0)
我唯一的建议是你错误配置了node.js服务器。尝试从头开始:
mkdir app
cd app
npm install -g express-generator
express -f
npm install
node .\bin\www
将项目的所有文件和resource
放在public
目录中。并尝试打开http://localhost:3000/index.html
答案 1 :(得分:0)
/ resources由com.sap.ui5.resource.ResourceServlet提供(请参阅您的web.xml; web.xml和Servlet在Java World中使用,例如Java应用程序服务器或Servlet容器,如Tomcat)
ResourceServlet侦听url-pattern / resources / *意味着每次将请求发送到匹配此模式的url时,ResourceServlet(Java类)将介入,查找正确的.jar文件并返回所需的来自它的JavaScript文件。这不适用于像Apache这样的普通网络服务器。
我不太了解express,但我想它无法运行Java Servlets,因此无法以与Tomcat相同的方式提供SAPUI5资源。
要解决此问题,您仍有一些选择:
使用Express为您的应用程序源提供服务,并在开发时从Tomcat加载UI5。这可能会导致跨源问题(因为localhost:8080和localhost:3000被认为是不同的来源)
< script src =" http:// locahost:8080 / resources / sap-ui-core.js" ...
解压缩所需的所有UI5 .jars并将它们放在YourApplication / resources /中。
BR 克里斯