Обслуживать разные активы в зависимости от модернизра - PullRequest
0 голосов
/ 28 декабря 2018

Я настраиваю новый сервер node.js и хочу отправить пользователю разные веб-страницы / ресурсы в зависимости от ответа библиотеки Modernizr.

Это сервер Windows, этоиспользует экспресс-основные команды, чтобы показать файлы.Некоторые браузеры не допускают изображения .webp, поэтому я решил включить Modernizr, чтобы определить, разрешена эта технология или нет, поэтому сервер предоставляет вам файлы .png или .webp, которые расположены в разных папках.

var express = require('express');
var app = express();
var path = require('path'); 
var fs = require('fs');
var http = require('http');
var url = require('url');
var Modernizr = './path/to/lib/modernizr.js';

function image() {
   Modernizr.on('webpanimation', function( result ) {
  if (result) {
    return "__dirname + '/webp'";
      }
  else {
    return "__dirname + '/png'";
  }
})
}

app.use('/', express.static(image()));

// app.use('/', express.static(__dirname + '/webp'));  (This works)   

app.listen(3000);
console.log("I'm here, in port 3000");

Когда вы запускаете, это выдает ошибку.

C:\Users\marke\Desktop\node>node app.js
C:\Users\marke\Desktop\node\app.js:10
        Modernizr.on('webpanimation', function( result ) {
                  ^

TypeError: Modernizr.on is not a function
    at image (C:\Users\marke\Desktop\node\app.js:10:12)
    at Object.<anonymous> (C:\Users\marke\Desktop\node\app.js:24:29)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)  

У меня есть различные теории, одна из которых заключается в том, что, возможно, путь Модернизра неверен, хотя я не могу найти другой способ попросить об этомкак я не могу использовать require.

Заранее спасибо ^^

1 Ответ

0 голосов
/ 08 января 2019

Насколько я понимаю, вы объявили переменную Modernizr как строку .

var Modernizr = './path/to/lib/modernizr.js';
...
Modernizr.on()...

Вы имели в виду:

var Modernizr = require('./path/to/lib/modernizr.js');

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...