Я обслуживаю свое локальное приложение ember в https
.Следовал примеру, который был приведен в https://github.com/ember-cli/ember-cli-inject-live-reload. Он отлично работал в ember 2.18.0
.ember-cli:
{
...
"liveReloadPort": 37531,
// This `liveReloadOptions` property becomes `window.LiveReloadOptions`
"liveReloadOptions": {
"port": 37631,
"https": true,
"host": "livereload.app-name.local"
},
"liveReloadJsUrl": "https://app-name.local/livereload.js"
}
после обновления ember
до 3.7.1
и ember-cli-inject-live-reload
до 2.0.1
получение ошибки в консоли браузера
GET https://app-name.local/livereload.js net::ERR_ABORTED 404 (Not Found)
(anonymous) @ ember-cli-live-reload.js:14
(anonymous) @ ember-cli-live-reload.js:15
ember-cli-live-reload.js:
(function() {
window.LiveReloadOptions = {"port":37631,"https":true,"host":"app-name.local","snipver":1};
var srcUrl = 'https://app-name.local/livereload.js';
var host= location.hostname || 'localhost';
var liveReloadPort = 37531;
var defaultPort = location.protocol === 'https:' ? 443 : 80;
var port = liveReloadPort || location.port || defaultPort;
var path = '&path=_lr/livereload';
var prefixURL = (location.protocol || 'http:') + '//' + host + ':' + 37531;
var src = srcUrl || prefixURL + '/_lr/livereload.js?port=' + port + '&host=' + host + path;
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = src;
"line 14" document.getElementsByTagName('head')[0].appendChild(script);
}());
Даже после изменения liveReloadJsUrl
и liveReloadOptions.host
с тем же именем выдает ошибку
GET https://livereload.app-name.local/livereload.js net::ERR_ABORTED 404 (Not Found)
.ember-cli
{
/**
Ember CLI sends analytics information by default. The data is completely
anonymous, but there are times when you might want to disable this behavior.
Setting `disableAnalytics` to true will prevent any data from being sent.
*/
"disableAnalytics": true,
"liveReloadPort": 37531,
// This `liveReloadOptions` property becomes `window.LiveReloadOptions`
"liveReloadOptions": {
"port": 37631,
"https": true,
"host": "livereload.app-name.local"
},
"liveReloadJsUrl": "https://livereload.app-name.local/livereload.js"
}
Вот мои конфигурационные файлы nginx nginx / servers / app-name_local.conf
upstream app {
server localhost:4200;
}
server {
listen 80;
server_name app-name.local;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name app-name.local;
ssl_certificate <path_to_ssl_cert>;
ssl_certificate_key <path_to_ssl_cert_key>
#create assess and error log files
access_log /usr/local/var/log/nginx/app-name/access.log;
error_log /usr/local/var/log/nginx/app-name/error.log;
try_files $uri /index.html $uri @app;
#change path here
root <path_to_ember_app>;
#the following code is only for dev
location ~ ^/livereload.js {
rewrite ^/(livereload.js) /$1 break;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://localhost:37531;
}
#end of dev only code
location @app {
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
nginx / servers / livereload_app-name_local.conf
upstream livereload {
server localhost:37531;
}
server {
listen 37631 ssl;
server_name livereload.app-name.local;
ssl_certificate <path_to_ssl_cert>;
ssl_certificate_key <path_to_ssl_cert_key>;
access_log /usr/local/var/log/nginx/app-name/access.log;
error_log /usr/local/var/log/nginx/app-name/error.log;
try_files $uri /index.html $uri @livereload;
root <path_to_ember_app>;
location /{
proxy_pass http://localhost:37531;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Решение:
обновление с помощью приведенного ниже кода решает проблему, .ember-cli
"liveReloadJsUrl": "https://livereload.app-name.local/_lr/livereload.js"
app-name_local.conf
...
location ~ ^/_lr/livereload.js {
rewrite ^/(_lr/livereload.js) /$1 break;