Electron: فشل تحميل المورد: net :: ERR_FILE_NOT_FOUND ملف: /// D: /css/app.css

تم إنشاؤها على ٢٥ مايو ٢٠١٥  ·  26تعليقات  ·  مصدر: electron/electron

لدي مثل هذا الهيكل في التطبيق:
file struct

أكتب في رأسي index.html:

<link rel="stylesheet" href="css/app.css"/>

تشغيل الإلكترون والحصول على خطأ:

capture
فشل تحميل المورد: net :: ERR_FILE_NOT_FOUND ملف: /// D: /css/app.css
من فضلك قل لي الجميع كيف يجب أن أحدد مسار الملف؟

التعليق الأكثر فائدة

إذا حدث هذا عند وجود <base href="/"> في index.html ، فقط استبدله بـ <base href="./"> .

ال 26 كومينتر

قضية ذات صلة: # 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. أظن يجب اعتبار / كدليل جذر عالمي للكمبيوتر عند استخدام بروتوكول الملفات. بينما يعمل "./" كمرجع نسبي للمجلد الحالي. مجرد تخمين ، عند استخدام بروتوكول http: // على المنفذ 4200 (حيث أخدم تطبيق Angular4 الخاص بي) كل شيء يعمل مع "/". لبروتوكول الملف يجب أن تستخدم "./"

قررت إعادة صياغة طلبي في React. بمجرد إضافة أداة تحميل الملفات إلى مشروعي ، بدأت في الحصول على هذه المشكلة مرة أخرى. أدى تغيير خاصية publicPath في webpack.config.js إلى مسار نسبي (بالنسبة لي. / app / بدلاً من / app /) إلى إصلاح المشكلة.

يبدو أن PS الخادم يكره هذا. إذا أجريت هذا التغيير وأردت تشغيل خادم تطوير webpack ، فسيؤدي هذا التغيير إلى إرباكه. ستحتاج إلى التبديل ذهابًا وإيابًا أثناء انتقالك من العمل مباشرة في الإلكترون والعمل على خادم dev (السبب في أنني أفعل ذلك هو القيام بعمل css ، أجد خادم dev أسرع وأكثر استقرارًا)

يمكنك حفظ ملف html باسم "حفظ كصفحة ويب" ثم حاول فتحه في Chrome.
هذا عمل معي.

كيفية حل مشكلة "
كلما أضفت صورة باستخدام "CSS" فإنها تلقي بهذا الخطأ. هل لديكم أي حل لها يا رفاق ؟؟؟
ليس فقط الصورة ولكن الملفات مثل ملف الخط ، فإنه يعطي نفس الخطأ.

تضمين التغريدة
يرجع ذلك إلى أنه يتم تقديم جميع ملفاتك من نظام الملفات المحلي بدلاً من مسار التطبيق ذي الصلة.
الحل هو اعتراض بروتوكول الملف. قم باتباع التغييرات في ملف main.js

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.js

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 */ })

قضية المسار. ابحث في المستعرض عن ملفك في 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

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

reggi picture reggi  ·  3تعليقات

sindresorhus picture sindresorhus  ·  3تعليقات

cniaulin picture cniaulin  ·  3تعليقات

chonsser picture chonsser  ·  3تعليقات

feross picture feross  ·  3تعليقات