【问题标题】:uws not found - VueJS using SocketIO未找到 uws - 使用 SocketIO 的 VueJS
【发布时间】:2019-03-12 05:22:54
【问题描述】:

我正在尝试使用 SocketIO 构建一个 vue 应用程序。我在编译时遇到的第一个错误( fs not found )已经通过在我的 webpack.base.conf.js 文件中添加:node: { fs: 'empty' } 得到修复。

但我不知道如何解决第二个错误:

ERROR  Failed to compile with 1 errors                                 
This dependency was not found:
* uws in ./node_modules/engine.io/lib/server.js

【问题讨论】:

  • 试过npm install?请分享nodejsnpmuws版本
  • npm install 不会改变任何东西。版本:“uws”:“^99.0.0”,节点:v8.11.3 和 npm:5.6.0

标签: javascript node.js vue.js webpack fs


【解决方案1】:
import io from 'socket.io-client'

如果您不添加“-client”,则您正在使用服务器组件。这不起作用,因为浏览器上没有“fs”,只是在 nodejs 端。

要让 typescript 导入工作,您需要 npm install of @types/socket.io-client

更新: 似乎,客户端不需要 uws 。我可以删除 uws 而不会遇到错误。如果需要,将重新检查...

【讨论】:

    【解决方案2】:

    似乎uws 软件包版本已被弃用,请参阅here

    您可以安装其他稳定版本。试试下面

    $ rm -rf ./node_modules/uws
    $ npm install uws@10.148.1 --save
    

    更新 1

    目标和用途略有不同的新版本可在https://github.com/uNetworking/uWebSockets.js获得

    由于已知的错误和问题,不建议使用旧版本。

    【讨论】:

    • 谢谢,它修复了错误。该应用程序启动但它不显示它。现在我得到这个错误: TypeError: exists is not a function。 (在 'exists(filepath)' 中,'exists' 是未定义的)它不是来自我编写的文件。你知道如何解决这个问题吗?
    • @mp_weber 可以和package.json分享代码吗?
    • @mp_weber 如果您正在使用 fs.exists,您可以在此处参考更多信息nodejs.org/api/fs.html#fs_fs_exists_path_callback
    • 我发布了我添加的最后一个代码和我的 package.json 。我通常不使用 fs.exists,但我的控制台现在说的有些不同。
    • @mp_weber 你能试试$ rm -rf ./node_modules && npm install吗?在 package.json 中保留 "uws": "10.148.1"
    【解决方案3】:

    package.json:

    {
      "name": "chat",
      "version": "1.0.0",
      "description": "A Vue.js project",
      "author": "",
      "private": true,
      "scripts": {
        "dev": "node build/dev-server.js",
        "start": "node build/dev-server.js",
        "build": "node build/build.js",
        "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
        "test": "npm run unit",
        "lint": "eslint --ext .js,.vue src test/unit/specs"
      },
      "dependencies": {
        "fs": "0.0.1-security",
        "socket.io": "^2.1.1",
        "socket.io-client": "^2.1.1",
        "uws": "^10.148.1",
        "vue": "^2.5.2",
        "vue-material": "^1.0.0-beta-10.2",
        "vue-router": "^3.0.1",
        "vue-socket.io": "^2.1.1-b"
      },
      "devDependencies": {
        "autoprefixer": "^7.1.5",
        "babel-core": "^6.26.0",
        "babel-eslint": "^8.0.1",
        "babel-loader": "^7.1.2",
        "babel-plugin-istanbul": "^4.1.5",
        "babel-plugin-transform-runtime": "^6.23.0",
        "babel-preset-env": "^1.6.0",
        "babel-preset-stage-2": "^6.24.1",
        "babel-register": "^6.26.0",
        "chai": "^4.1.2",
        "chalk": "^2.1.0",
        "connect-history-api-fallback": "^1.4.0",
        "copy-webpack-plugin": "^4.1.1",
        "cross-env": "^5.0.5",
        "css-loader": "^0.28.7",
        "cssnano": "^3.10.0",
        "eslint": "^4.9.0",
        "eslint-config-standard": "^10.2.1",
        "eslint-friendly-formatter": "^3.0.0",
        "eslint-loader": "^1.9.0",
        "eslint-plugin-html": "^3.2.2",
        "eslint-plugin-import": "^2.7.0",
        "eslint-plugin-node": "^5.2.0",
        "eslint-plugin-promise": "^3.6.0",
        "eslint-plugin-standard": "^3.0.1",
        "eventsource-polyfill": "^0.9.6",
        "express": "^4.16.3",
        "extract-text-webpack-plugin": "^3.0.0",
        "file-loader": "^1.1.5",
        "friendly-errors-webpack-plugin": "^1.6.1",
        "html-webpack-plugin": "^2.30.1",
        "http-proxy-middleware": "^0.17.4",
        "inject-loader": "^3.0.1",
        "karma": "^1.7.1",
        "karma-coverage": "^1.1.1",
        "karma-mocha": "^1.3.0",
        "karma-phantomjs-launcher": "^1.0.4",
        "karma-phantomjs-shim": "^1.5.0",
        "karma-sinon-chai": "^1.3.2",
        "karma-sourcemap-loader": "^0.3.7",
        "karma-spec-reporter": "0.0.31",
        "karma-webpack": "^2.0.5",
        "mocha": "^4.0.1",
        "opn": "^5.1.0",
        "optimize-css-assets-webpack-plugin": "^3.2.0",
        "ora": "^1.3.0",
        "phantomjs-prebuilt": "^2.1.15",
        "rimraf": "^2.6.2",
        "semver": "^5.4.1",
        "shelljs": "^0.7.8",
        "sinon": "^4.0.1",
        "sinon-chai": "^2.14.0",
        "sw-precache-webpack-plugin": "^0.11.4",
        "uglify-es": "^3.1.3",
        "url-loader": "^0.6.2",
        "vue-loader": "^13.3.0",
        "vue-style-loader": "^3.0.3",
        "vue-template-compiler": "^2.5.2",
        "webpack": "^3.7.1",
        "webpack-bundle-analyzer": "^2.9.0",
        "webpack-dev-middleware": "^1.12.0",
        "webpack-hot-middleware": "^2.19.1",
        "webpack-merge": "^4.1.0"
      },
      "engines": {
        "node": ">= 4.0.0",
        "npm": ">= 3.0.0"
      },
      "browserslist": [
        "> 1%",
        "last 2 versions",
        "not ie <= 8"
      ]
    }
    

    目前还没有太多代码。我添加的最后一件事是:

        <script>
        export default {
          data () {
            return {
              isConnected: false,
              socketMessage: ''
        } 
      },
    
      sockets: {
        connect () {
          // Fired when the socket connects.
          this.isConnected = true
        },
    
        disconnect () {
          this.isConnected = false
        },
    
        // Fired when the server sends something on the "messageChannel" channel.
        messageChannel (data) {
          this.socketMessage = data
        }
      },
    
      methods: {
        pingServer () {
          // Send the "pingServer" event to the server.
          this.$socket.emit('pingServer', 'PING!')
        }
      }
    }
    </script>
    

    添加后我得到了所有错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      相关资源
      最近更新 更多