我遇到了从我的 Rails/Webpacker 应用程序远程加载非常基本的 JS 脚本的问题。
这是我的 JS 脚本:
# app/javascript/some.js
console.log('loaded');
首先,我将我的包包含到我的 Rails 视图中,并且“已加载”字符串呈现在浏览器的控制台中。到目前为止一切都很好。
接下来,我希望能够远程加载这个脚本。所以我创建了一个这样的 HTML 文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<script type="text/javascript" src="http://localhost:3000/packs/js/some.js"></script>
</head>
<body>
</body>
</html>
绝对没有任何反应!
我确定它加载得很好,因为如果使例如。
src
中的错字 我在控制台中收到 404:“无法加载资源:服务器响应状态为 404(未找到)”
现在,当我检查我的清单时,我看到加载了三个资产:
# manifest.json
"some": {
"assets": {
"js": [
"/packs/js/runtime.js",
"/packs/js/vendors-node_modules_webpack-dev-server_client_index_js_protocol_ws_3A_hostname_localhost_por-95065b.js",
"/packs/js/some.js"
]
}
}
所以,当我将这些 JS 脚本包含在我的 HTML 中时,它起作用了:
# working example
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<script type="text/javascript" src="http://localhost:3000/packs/js/runtime.js"></script>
<script type="text/javascript" src="http://localhost:3000/packs/js/vendors-node_modules_webpack-dev-server_client_index_js_protocol_ws_3A_hostname_localhost_por-95065b.js"></script>
<script type="text/javascript" src="http://localhost:3000/packs/js/some.js"></script>
</head>
<body>
</body>
</html>
但问题是:我不想在我的 HTML 中包含三次 JS(出于多种原因)。
所以,我的问题是:我该怎么做才能让我的
'app/javascript/some.js'
文件远程加载,而我只需要包含一个JS文件。