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

如何解决在 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 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-