اذهب إلى المحتوى
  • 0

السؤال

نشر

أقوم باستخدام إطار العمل express.js وحاولت وضع كود بسيط كالتالي:

var express = require('express');
var app = express();

app.all('*', (req, res) => {
  res.sendFile(__dirname+'/index.html')
})

var server = app.listen(3000, () => {
  const host = server.address().address
  const port = server.address().port
})

ولكن أحصل على الخطأ التالي ضمن الكونسول:

SyntaxError: expected expression, got '<'

ولا يظهر أي شيء ضمن الصفحة. كيف يمكنني حل هذه المشكلة؟

Recommended Posts

  • 1
نشر

الجزء التالي من الأكواد:

app.all('*', function (req, res) {
  res.sendFile(__dirname+'/index.html') 
})

تخبر Express أنه أيًا كان طلب المتصفح، سيقوم الخادم بإرسال ملف index.html. فعندما يقوم المتصفح بطلب ملفات JavaScript  مثل jquery-x.y.z.main.js أو angular.min.js سيقوم المتصفح سيقوم المتصفح بإرجاع محتوى ملف index.html و الذي يبدأ ب <!DOCTYPE html> و هو ما تسبب في ظهور خطأ JavaScript.

 

لذلك من المفترض أن تعالج الأكواد الخاصة بال callback الطلب المرسل و تقوم بتحديد الملف المطلوب تحديدًا و إرساله، أو/و يمكنك استخدام دالة أخرى غير app.all.

  • 1
نشر

يمكنك تجربة هذا الكود لحل مشكلتك

// استبدل appPath بالمسار المطلوب
app.set('appPath', 'public');
app.use(express.static(__dirname +'/public'));

app.route('/*')
  .get(function(req, res) {// استبدل appPath بالمسار المطلوب
    res.sendfile(app.get('appPath') + '/index.html');
  });

حيث يحتوي المسار  العام public على ملف index.html  ويشير إلى جميع الملفات في المجلد 

الكود express.static يخدم الملفات الثابتة بشكل صحيح (ملفات .js و css كما هو مشار إليه بواسطة index.html). بناءً على التعليمات البرمجية الخاصة بك ، ستحتاج على الأرجح إلى استخدام هذا السطر بدلاً من ذلك:

app.use(express.static(__dirname));

حيث أن جميع ملفات JS الخاصة بك ، index.html وملف خادم JS الخاص بك في نفس المسار.

.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...