我有一个flutter应用程序,使用Firebase的云Firestore。我已经完成了网页构建,通过Android Studio在Chrome上运行效果很好。我想与客户分享网页应用程序的进度,但不想托管它(因为它还没有完成)。因此,我想找到一种方法来运行它本地相同的方式,你可以用Android Studio,但不需要安装Android Studio(希望也不需要安装flutter),这样我就可以将构建文件发送到我的客户端,他们就可以在他们的机器上运行它(使用脚本在本地启动Web服务器并运行Web应用程序)。
我已经尝试了Web Build文件夹中包含的以下脚本(index.html所在的位置)
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from httplib import HTTPResponse
from os import curdir,sep
#Create a index.html aside the code
#Run: python server.py
#After run, try http://localhost:8080/
class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == '/':
self.path = '/index.html'
try:
sendReply = False
if self.path.endswith(".html"):
mimeType = 'text/html'
sendReply = True
if sendReply == True:
f = open(curdir + sep + self.path)
self.send_response(200)
self.send_header('Content-type', mimeType)
self.end_headers()
self.wfile.write(f.read())
f.close()
return
except IOError:
self.send_error(404,'File not found!')
def run():
print('http server is starting...')
#by default http server port is 80
server_address = ('127.0.0.1', 8080)
httpd = HTTPServer(server_address, RequestHandler)
try:
print 'http server is running...'
httpd.serve_forever()
except KeyboardInterrupt:
httpd.socket.close()
if __name__ == '__main__':
run()
但是当我在Chrome上打开http://localhost:8000
时,我得到了一个空白页面,控制台显示错误:
Failed to load resource: net::ERR_EMPTY_RESPONSE main.dart.js:1
Failed to load resource: net::ERR_EMPTY_RESPONSE manifest.json:1
Failed to load resource: net::ERR_EMPTY_RESPONSE :8080/favicon.png:1
我还通过运行ws --spa index.html
尝试了NPM local-web-server,但只是得到了ERR_EMPTY_RESPONSE
响应。
这是我运行flutter build web
后在我的build/web
中得到的:
如何创建本地服务器,以便在本地托管Web应用并在本地运行,而无需在Internet上托管?
2条答案
按热度按时间gajydyqb1#
正如你在评论中提到的,你去吧。
使用以下内容创建文件
app.js
:这里我的网站文件存在于
website
文件夹,我的入口点是y.html
。设置静态文件目录(您的网站页面),然后为根请求提供.html示例项目:https://github.com/ondbyte/website
最后,运行它打开终端并移动到根文件夹.然后做
dxxyhpgq2#
以下是更简单的方法。无需设置服务器
在vscode中打开Build/web文件夹。
在vscode中安装Live服务器插件。
点击金色按钮
现在你的flutter网络应用程序将在本地运行,而无需使用android studio。