根据 Modernizr 提供不同的资产
Serve different assets depending Modernizr
我正在设置一个新的 node.js 服务器,我想根据 Modernizr 库的响应向用户发送不同的 Web pages/assets。
这是一个 Windows 服务器,它使用 express 基本命令来显示文件。有些浏览器不允许 .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)
我有各种说法,其中一个可能是 Modernizr 的路径是错误的,虽然我无法使用 require 找不到任何其他方式来请求它。
提前致谢^^
据我所知,您已将 Modernizr 变量声明为 string。
var Modernizr = './path/to/lib/modernizr.js';
...
Modernizr.on()...
你的意思是:
var Modernizr = require('./path/to/lib/modernizr.js');
?
我正在设置一个新的 node.js 服务器,我想根据 Modernizr 库的响应向用户发送不同的 Web pages/assets。
这是一个 Windows 服务器,它使用 express 基本命令来显示文件。有些浏览器不允许 .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)
我有各种说法,其中一个可能是 Modernizr 的路径是错误的,虽然我无法使用 require 找不到任何其他方式来请求它。
提前致谢^^
据我所知,您已将 Modernizr 变量声明为 string。
var Modernizr = './path/to/lib/modernizr.js';
...
Modernizr.on()...
你的意思是:
var Modernizr = require('./path/to/lib/modernizr.js');
?