问题描述
(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 (将#修改为@)