为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 和 JavaScript 模块

Golang 和 JavaScript 模块

Go
MMTTMM 2023-07-26 17:06:22
我想将 Polymer LitElement 与 Go 后端结合使用。通过 LitElement,我在 JavaScript 模块中实现了 Web 组件!对于服务器端的路由,我使用 Gorilla Mux,如下所示mux := mux.NewRouter()mux.PathPrefix("/").Handler(http.FileServer(http.Dir("./wwwroot")))这会正确加载静态 html 文件。当 html 文件引用实现 Web 组件的js文件时,我收到以下错误(在 Chrome 中):无法加载模块脚本:服务器以非 JavaScript MIME 类型“text/plain”进行响应。根据 HTML 规范对模块脚本强制执行严格的 MIME 类型检查。当我将组件模块重命名为扩展名mjs时,文件会正确加载,但 LitElement 的模块无法加载,并出现相同的错误。由于我对所有第三方 JavaScript 模块的文件扩展名没有影响,我不知道如何解决这个问题。(我想如果我使用 Polymer 3 而不是 LitElement,我也会遇到同样的问题)有任何想法吗?更新以下是请求 lit-element.js JavaScript 模块的输出curlPS C:\Test\Polymer\LitElement> curl http://localhost:8082/node_modules/lit-element/lit-element.jsStatusCode        : 200StatusDescription : OKContent           : /**                     * @license                     * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.                     * This code may only be used under the BSD style license found at                     * http://polymer.github.io/LICENSE.txt                     * Th...RawContent        : HTTP/1.1 200 OK                    Accept-Ranges: bytes                    Content-Length: 8925                    Content-Type: text/plain; charset=utf-8                    Date: Thu, 26 Sep 2019 11:38:23 GMT                    Last-Modified: Sat, 26 Oct 1985 08:15:00 GMT                    /**                     * @licen...Forms             : {}Headers           : {[Accept-Ranges, bytes], [Content-Length, 8925], [Content-Type, text/plain; charset=utf-8], [Date,                    Thu, 26 Sep 2019 11:38:23 GMT]...}Images            : {}InputFields       : {}Links             : {}ParsedHtml        : mshtml.HTMLDocumentClassRawContentLength  : 8925注意内容类型!!!
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

您确定到达了正确的终点吗?


请参阅那个小示例(您可以尝试在您的主机上进行检查)


$ tree

.

├── main.go

└── wwwroot

    └── test.js


1 directory, 2 files


$ cat main.go 

package main


import (

    "net/http"


    "github.com/gorilla/mux"

)


func main() {

    mux := mux.NewRouter()

    mux.PathPrefix("/").Handler(http.FileServer(http.Dir("./wwwroot")))


    http.ListenAndServe(":8080", mux)

}



$  cat wwwroot/test.js


$ go run main.go &

[1] 11841

$ curl -v http://localhost:8080/test.js

*   Trying ::1:8080...

* TCP_NODELAY set

* Connected to localhost (::1) port 8080 (#0)

> GET /test.js HTTP/1.1

> Host: localhost:8080

> User-Agent: curl/7.65.3

> Accept: */*

* Mark bundle as not supporting multiuse

< HTTP/1.1 200 OK

< Accept-Ranges: bytes

< Content-Length: 0

< Content-Type: application/javascript

< Last-Modified: Thu, 26 Sep 2019 12:12:15 GMT

< Date: Thu, 26 Sep 2019 12:15:36 GMT

* Connection #0 to host localhost left intact


查看完整回答
反对 回复 2023-07-26
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

在我的项目中,我遇到了同样的问题。以下是我的解决方案:在tsconfig.json文件中,make"target": "es5"



查看完整回答
反对 回复 2023-07-26
  • 2 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信