لدي مثل هذا الهيكل في التطبيق:
أكتب في رأسي index.html:
<link rel="stylesheet" href="css/app.css"/>
تشغيل الإلكترون والحصول على خطأ:
فشل تحميل المورد: net :: ERR_FILE_NOT_FOUND ملف: /// D: /css/app.css
من فضلك قل لي الجميع كيف يجب أن أحدد مسار الملف؟
قضية ذات صلة: # 1747.
جرب هذا كطريقة بديلة للتغلب على مشكلة المسار هذه:
<html>
<head>
<title></title>
</head>
<body>
<script>
var link = document.createElement('link')
link.setAttribute('rel', 'stylesheet')
link.setAttribute('href', require('path').join(__dirname, 'css', 'app.css'))
document.head.appendChild(link)
</script>
</body>
</html>
shama شكرا على المقتطف.
أحصل على خطأ لأن استخدام <base href = "/"> ، بدون هذا الخطأ لا يحدث.
نموذج للعمل https://github.com/RinatMullayanov/angular-boilerplate فرع الإلكترون .
لديك نفس المشكلة أيضا. يحاول Electron تحميل الموارد من C: / ، المسارات النسبية لا تعمل.
لا يعد تحديد المسار الكامل خيارًا ، فلن يتم تحميل الملفات إذا كنا سنضع التطبيق على مسار آخر.
لدي نفس المشكلة في الحصول على بعض الخطوط
لقد أضفت هذا إلى CSS الخاص بي
<strong i="7">@import</strong> url(https://fonts.googleapis.com/css?family=Open+Sans:400,700);
لقد حاولت إضافة هذا إلى html الخاص بي:
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans" />
لقد حاولت أيضًا:
<link rel="stylesheet" type="text/css" href="http//fonts.googleapis.com/css?family=Open+Sans" />
<link rel="stylesheet" type="text/css" href="https//fonts.googleapis.com/css?family=Open+Sans" />
لكنني أتلقى هذا الخطأ:
Failed to load resource: net::ERR_CONNECTION_REFUSED
إذا حدث هذا عند وجود <base href="/">
في index.html ، فقط استبدله بـ <base href="./">
.
Myrga أنت إنقاذ الحياة. لقد كنت أبحث عن إجابة لمدة 5 أيام حتى الآن ، لا يوجد مستند على هذا ، حتى صادفت هذا المنشور القديم. شكرا جزيلا
ملاحظة: إذا أتيت إلى هنا وكنت تستخدم تطبيق create-react-app ، فحاول وضع "homepage": "./",
في الحزمة الخاصة بك. json. (على الرغم من أنه من الواضح أن هذا غير مدعوم حاليًا ، فقد تواجه مشكلات أخرى مع الخطوط وما شابه ، مما قد يتطلب نقل هذه الأصول إلى مجلدك / المجلد العام)
شكرا جزيلا لك
BesatZardosht لديك خطأ إملائي في عنوان URL الخاص بك:
<link rel="stylesheet" type="text/css" href="https//fonts.googleapis.com/css?family=Open+Sans" />
يجب ان يكون:
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans" />
(لاحظ :
)
في حال كنت هنا مع نفس المشكلة باستخدام Webpack 2.x
، React
و / أو Redux
، هناك فرصة لحل مشكلتك:
ابحث في دليل المشروع عن "publicPath" وقم بتغيير قيمته من
/
إلى./
مع كل النماذج المختلفة المتاحة ، يمكن العثور على هذا الإعداد في مواقع مختلفة ، في حالتي باستخدامredux-cli
الذي يستخدمredux-starter-kit
، كان فيproject.config.js
:
publicPath: './',
أيضًا إذا كنت تقوم بالبناء مقابل Electron
فقد تحتاج إلى إضافة / تعديل خاصية Webpack target
.
ابقى سعيد!! 😄
واجهت نفس المشكلة ، نجح حل Myrga. أظن
قررت إعادة صياغة طلبي في React. بمجرد إضافة أداة تحميل الملفات إلى مشروعي ، بدأت في الحصول على هذه المشكلة مرة أخرى. أدى تغيير خاصية publicPath في webpack.config.js إلى مسار نسبي (بالنسبة لي. / app / بدلاً من / app /) إلى إصلاح المشكلة.
يبدو أن PS الخادم يكره هذا. إذا أجريت هذا التغيير وأردت تشغيل خادم تطوير webpack ، فسيؤدي هذا التغيير إلى إرباكه. ستحتاج إلى التبديل ذهابًا وإيابًا أثناء انتقالك من العمل مباشرة في الإلكترون والعمل على خادم dev (السبب في أنني أفعل ذلك هو القيام بعمل css ، أجد خادم dev أسرع وأكثر استقرارًا)
يمكنك حفظ ملف html باسم "حفظ كصفحة ويب" ثم حاول فتحه في Chrome.
هذا عمل معي.
كيفية حل مشكلة "
كلما أضفت صورة باستخدام "CSS" فإنها تلقي بهذا الخطأ. هل لديكم أي حل لها يا رفاق ؟؟؟
ليس فقط الصورة ولكن الملفات مثل ملف الخط ، فإنه يعطي نفس الخطأ.
تضمين التغريدة
يرجع ذلك إلى أنه يتم تقديم جميع ملفاتك من نظام الملفات المحلي بدلاً من مسار التطبيق ذي الصلة.
الحل هو اعتراض بروتوكول الملف. قم باتباع التغييرات في ملف main.js
mainWindow = new BrowserWindow({width: 1100, height: 700, icon: __dirname + '/icon.ico'})
mainWindow.loadURL(url.format({
pathname:'index.html',
protocol: 'file',
slashes: true
}))
app.on('ready', () => {
protocol.interceptFileProtocol('file', (request, callback) => {
const url = request.url.substr(7) /* all urls start with 'file://' */
callback({ path: path.normalize(
$ {__ dirname} / $ {url} )})
}, (err) => {
if (err) console.error('Failed to register protocol')
})
createWindow() /* callback function */
})
أ
تضمين التغريدة
يرجع ذلك إلى أنه يتم تقديم جميع ملفاتك من نظام الملفات المحلي بدلاً من مسار التطبيق ذي الصلة.
الحل هو اعتراض بروتوكول الملف. قم باتباع التغييرات في ملف main.jsMain.js
mainWindow = new BrowserWindow({width: 1100, height: 700, icon: __dirname + '/icon.ico'}) mainWindow.loadURL(url.format({ pathname:'index.html', protocol: 'file', slashes: true }))
app.on('ready', () => { protocol.interceptFileProtocol('file', (request, callback) => { const url = request.url.substr(7) /* all urls start with 'file://' */ callback({ path: path.normalize(
$ {__ dirname} / $ {url})}) }, (err) => { if (err) console.error('Failed to register protocol') }) createWindow() /* callback function */ })
?
قضية المسار. ابحث في المستعرض عن ملفك في D: /css/app.css. هذا لأن في مكان ما في التعليمات البرمجية الخاصة بك ، قد ذكرت مسارًا خاطئًا. إذا أعطيت مسارًا مثل / css / ... فسيتم البحث في D: /
هذا أيضا فعل الحيلة. شكرا للسيد itsaakashpatel على البصيرة.
// ...
const { protocol } = require('electron')
// ...
// run the next block right before <BrowserWindow>.loadFile()
const htmlRootDir = 'dist/'
const indexFile = 'index.html'
protocol.interceptFileProtocol(
'file',
(request, callback) => {
const url = request.url.substr(7) // strip "file://" out of all urls
if (request.url.endsWith(indexFile)) {
callback({ path: url })
} else {
callback({ path: path.normalize(`${__dirname}/${htmlRootDir}/${url}`) })
}
},
error => console.error(error)
)
// ...
فقط استبدل htmlRootDir
و / أو indexFile
لتوقعاتك.
_ تم اختباره على Linux_
Myrga شكرا على حفظ يومي. أحببت إجابتك :)
Myrga حسنًا ، من المحتمل أن تقوم بتعيين "homepage": "./"
في package.json
بدلاً من الترميز الثابت لهذه الأشياء.
Myrga حسنًا ، من المحتمل أن تقوم بتعيين
"homepage": "./"
فيpackage.json
بدلاً من الترميز الثابت لهذه الأشياء.
من فضلك @ defusioner ، هل هناك أي مستند حول هذا؟
leodutra humm، أنا باستخدام تتفاعل-طعنه وأنها قادرة على إنتاج مثل هذا التكوين: https://create-react-app.dev/docs/deployment#building حصول نسبي مسارات
defusioner Hum ، هذا يفسر الكثير.
يبدو أن هذا ليس على مستوى الإلكترون ، إنه أكثر صفحة رئيسية لتطبيقات التفاعل ، حيث سيحل هذا محل الجذر الافتراضي لأي رابط قريب أو جذر.
في حالتي ، باستخدام Vue.js dist أو الإلكترون الخام ، ربما لن ينجح هذا.
أعتقد أنه يجب أخذ نهج الحزمة هذا في الاعتبار ... مثل بعض electronBasePath
على package.json
أعتقد أن win.loadFile('index.html')
يشبه الهراء! بعد أن نقوم بترجمته إلى ملف EXE باستخدام electron-builder
. سيظهر دائمًا DevTools failed to load SourceMap: Could not load content for file:///C:/User..../resources/app.asar/bootstrap.min.css.map
.
لكن win.loadURL()
يعمل بشكل جيد.
قضيت 8 ساعات لأكتشف أن هذا خطأ لا يمكنني حله.
ثم أدركت أن هذا الخطأ ليس مهمًا ، لأنه تم استيراد ملف الخريطة بالفعل.
بالنسبة لي ، كان الخطأ الحقيقي ناتجًا عن alert()
: https://stackoverflow.com/questions/56805920/cant-edit-input-text-field-after-window-alert
التعليق الأكثر فائدة
إذا حدث هذا عند وجود
<base href="/">
في index.html ، فقط استبدله بـ<base href="./">
.