socket.io-stream 404错误求助:非Node.js环境下无法正常引入脚本
你碰到的核心问题是文件引用路径错误,加上没法用Express托管node_modules目录,所以得用手动复制文件的方式来解决,具体步骤如下:
第一步:找到浏览器可用的socket.io-stream文件
你安装的socket.io-stream在node_modules/socket.io-stream/dist/目录下,里面有socket.io-stream.js(未压缩)和socket.io-stream.min.js(压缩版),这两个是专门给浏览器环境编译好的版本,别用node_modules根目录下的文件,那是给Node.js用的。第二步:复制文件到你的静态资源目录
把上面找到的文件复制到你HTML里指定的scripts/文件夹下,这样你原来的引用路径scripts/socket.io-stream.js就能准确指向这个文件了。第三步:确保依赖顺序正确
socket.io-stream依赖socket.io的客户端库,所以必须先引入socket.io,再引入socket.io-stream:<!-- 优先用socket.io服务端自动提供的客户端文件,如果你的socket.io服务端在运行,这个路径是有效的 --> <script src="/socket.io/socket.io.js"></script> <!-- 然后引入你复制过来的socket.io-stream --> <script type="text/javascript" src="scripts/socket.io-stream.js"></script>如果你的socket.io不是本地服务端托管的,那也去
node_modules/socket.io/client-dist/目录下复制socket.io.js到scripts/文件夹,然后改成<script src="scripts/socket.io.js"></script>。第四步:验证路径有效性
在浏览器地址栏直接访问http://localhost:3000/scripts/socket.io-stream.js,如果能正常显示文件内容,说明路径没问题,刷新页面后404和MIME类型错误都会消失。
补充一下:你看到的MIME类型错误是404的连锁反应——服务器找不到文件时返回了HTML格式的错误页面,浏览器尝试把这个HTML当成JS执行,自然就会报MIME类型不匹配的错误,解决文件路径问题后这个错误也会自动消失。
内容的提问来源于stack exchange,提问作者Ethan Hardacre

