在 Express 中使用 Browserify 会在 js 文件上触发 GET 请求

问题描述

(Express newb) 我正在 Webstorm 上使用 Express.js 应用程序构建一个 bash 模拟器,并尝试在客户端使用 browserify。

我收到以下错误GET /bash-emulator.min.js 404

我试图弄清楚为什么这个 GET 请求甚至被触发,而我在这里所做的只是在 min.js 标记中包含 script文件1}} 文件

代码

.pug

/bin/www

#!/usr/bin/env node /** * Module dependencies. */ var app = require('../app'); var debug = require('debug')('app-cli:server'); var http = require('http'); /** * Get port from environment and store in Express. */ var port = normalizePort(process.env.PORT || '3000'); app.set('port',port); /** * Create HTTP server. */ var server = http.createServer(app); /** * Listen on provided port,on all network interfaces. */ server.listen(port); server.on('error',onError); server.on('listening',onListening); /** * normalize a port into a number,string,or false. */ function normalizePort(val) { var port = parseInt(val,10); if (isNaN(port)) { // named pipe return val; } if (port >= 0) { // port number return port; } return false; } /** * Event listener for HTTP server "error" event. */ function onError(error) { if (error.syscall !== 'listen') { throw error; } var bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port; // handle specific listen errors with friendly messages switch (error.code) { case 'EACCES': console.error(bind + ' requires elevated privileges'); process.exit(1); break; case 'EADDRINUSE': console.error(bind + ' is already in use'); process.exit(1); break; default: throw error; } } /** * Event listener for HTTP server "listening" event. */ function onListening() { var addr = server.address(); var bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port; debug('Listening on ' + bind); }

package.json

{ "name": "app-cli","version": "0.0.0","private": true,"scripts": { "build": "browserify ./browser-version.js | uglifyjs > ./bash-emulator.min.js","start": "node ./bin/www" },"dependencies": { "bash-emulator": "^1.1.0","browserify-shim": "^3.8.14","cookie-parser": "~1.4.4","debug": "~2.6.9","express": "~4.16.1","express-browserify": "^1.0.3","http-errors": "~1.6.3","morgan": "~1.9.1","pug": "2.0.0-beta11","save": "^2.4.0" } }

index.pug

doctype html head Meta(charset='utf-8') title=title style. html,body { color: white; font-size: 150%; height: 100%; width: 100%; margin: 0; padding: 0; } body,#input { background: black; font-family: monospace; line-height: 120%; } #output { white-space: pre; } #input { width: 90%; border: none; font-size: inherit; } #input:focus { outline: none; } #input,.input-wrap { color: lime; } .error { color: red; } #output .input-wrap span $ input#input(type='text' autofocus='') // thanks to http://tholman.com/github-corners/ a.github-corner(href='https://github.com/trybash/bash-emulator') svg(width='80' height='80' viewBox='0 0 250 250' style='fill:#fff; color:#151513; position: fixed; top: 0; border: 0; right: 0;') path(d='M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z') path.octo-arm(d='M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2' fill='currentColor' style='transform-origin: 130px 106px;') path.octo-body(d='M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z' fill='currentColor') style. .github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}} script(src='bash-emulator.min.js'). var input = document.getElementById('input') var output = document.getElementById('output') var emulator = bashEmulator({ workingDirectory: '/',fileSystem: { '/': { type: 'dir',modified: Date.Now() },'/README.txt': { type: 'file',modified: Date.Now(),content: 'empty' },'/home': { type: 'dir','/home/user/journal.txt': { type: 'file',content: 'this is private!' },'/home/user': { type: 'dir',modified: Date.Now() } } }) emulator.commands.clear = function (env) { output.innerHTML = '' env.exit() } var ENTER = 13 var UP = 38 var DOWN = 40 function log (result) { if (result) { output.innerHTML += result + '\\n' } } function error (result) { log('<div class="error">' + result + '</div>') } function run (cmd) { log('$ ' + cmd) return emulator.run(cmd).then(log,error) } var completeFunctions = {} completeFunctions[UP] = emulator.completeUp completeFunctions[DOWN] = emulator.completeDown function complete (direction) { var completeFunction = completeFunctions[direction] if (!completeFunction) { return } var cursorPosition = input.selectionStart var beforeCursor = input.value.slice(0,cursorPosition) completeFunction(beforeCursor).then(function (completion) { if (completion) { input.value = completion input.setSelectionRange(cursorPosition,cursorPosition) } }) } input.addEventListener('keydown',function (e) { if (e.altKey || e.MetaKey || e.shiftKey || e.ctrlKey) { return } if (e.which === UP || e.which === DOWN) { e.preventDefault() complete(e.which) } }) input.addEventListener('keyup',function (e) { if (e.which !== ENTER) { return } run(input.value).then(function () { input.value = '' document.body.scrollTop = 10e6 }) }) document.body.addEventListener('click',function () { // Prevent when user is selecting text if (!window.getSelection().isCollapsed) { return } input.focus() }) run('pwd').then(function () { run('ls') })

index.js

var express = require('express'); var router = express.Router(); var expressbrowserify = require('express-browserify'); /* GET home page. */ router.get('/',function(req,res,next) { res.render('index',{title: 'CLI webapp'}) }); module.exports = router;

app.js

var createError = require('http-errors'); var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); var logger = require('morgan'); var indexRouter = require('./routes/index'); var usersRouter = require('./routes/users'); var app = express(); // view engine setup app.set('views',path.join(__dirname,'views')); app.set('view engine','pug'); app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname,'public'))); app.use('/',indexRouter); app.use('/users',usersRouter); // catch 404 and forward to error handler app.use(function(req,next) { next(createError(404)); }); // error handler app.use(function(err,req,next) { // set locals,only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app;

bash-emulator.min.js

(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){window.bashEmulator=require("./index")},{"./index":2}],2:[function(require,exports){},{}]},{},[1]);

browser-version.js

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)