Socket.io-client: Проблемы сборки Webpack с 1.4.1

Созданный на 7 янв. 2016  ·  57Комментарии  ·  Источник: socketio/socket.io-client

В версии 1.4.1 я вижу следующую проблему с Webpack. У моего кода нет проблем с 1.4.0

WARNING in ./~/mySubApp/~/socket.io-client/~/engine.io-client/~/ws/lib/BufferUtil.js
Module not found: Error: Cannot resolve module 'bufferutil' in /u//WebStormProjects/myProject/node_modules/mySubApp/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib
 @ ./~/mySubApp/~/socket.io-client/~/engine.io-client/~/ws/lib/BufferUtil.js 10:19-40

WARNING in ./~/mySubApp/~/socket.io-client/~/engine.io-client/~/ws/lib/Validation.js
Module not found: Error: Cannot resolve module 'utf-8-validate' in /u//WebStormProjects/myProject/node_modules/mySubApp/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib
 @ ./~/mySubApp/~/socket.io-client/~/engine.io-client/~/ws/lib/Validation.js 10:19-44

ERROR in ./~/mySubApp/~/socket.io-client/~/engine.io-client/~/ws/lib/WebSocketServer.js
Module not found: Error: Cannot resolve module 'tls' in /u//WebStormProjects/myProject/node_modules/mySubApp/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib
 @ ./~/mySubApp/~/socket.io-client/~/engine.io-client/~/ws/lib/WebSocketServer.js 15:10-24

ERROR in ./~/mySubApp/~/socket.io-client/~/engine.io-client/~/ws/~/options/lib/options.js
Module not found: Error: Cannot resolve module 'fs' in /u//WebStormProjects/myProject/node_modules/mySubApp/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/options/lib
 @ ./~/mySubApp/~/socket.io-client/~/engine.io-client/~/ws/~/options/lib/options.js 6:9-22

Самый полезный комментарий

Предупреждения пропали когда я включил

import * as io from "socket.io-client";

вместо того

import * as io from "socket.io";

Тем не менее, у меня поведение как в №1088. Минимальное приложение с ошибкой находится в этой теме.

_Edit: Решил мою проблему. Это было не из-за socket.io._

Все 57 Комментарий

+1

А пока рекомендую:

  module: {
    noParse: ['ws']
  },
  externals: ['ws']

пока мы не выясним лучшее решение

Причина, вероятно, в том, что опубликованный пакет на npm содержит файл webpack.config.js которого не было с <= 1.4.0. Откуда это вообще? Я не вижу этого в репо.

Сборка Browserify тоже не работает. Принудительное использование 1.4.0 устраняет проблему.

Я случайно опубликовал этот файл. Я экспериментировал с отказом от браузера.

1.4.3 out.

Примечание для себя: следует явно установить files в package.json

По-прежнему возникают те же проблемы с 1.4.3. Добавление:

 module: {
    noParse: ['ws']
  },
  externals: ['ws']

Хотя помогает.

Все еще сломан.

@Levino Я думаю, вам придется заставить браузер игнорировать / исключать ws, как там

Но любое решение лучше, чем этот обходной путь, будет тепло приветствоваться.

Сейчас я просто использую версию "~ 1.3.7" вместо "^ 1.3.7" в своих пакетах.

Переместил это с сервера в этот поток socket.io-client.


Был запущен 1.3.7 и использовал npm для обновления socket.io-client до 1.4.3.

Приложение использует только socket.io-client для подключения к игровому серверу (также обновлено до socket.io 1.4.3). Разрабатывается на windows 7.

Пробовал удалить через npm и переустановить. Не ожидал увидеть предупреждения и ошибки от socket.io-client и engine.io-client при запуске приложения.

Разве недостающие модули не должны быть частью пакета npm?

Предупреждения:

WARNING in ./~/socket.io-client/~/engine.io-client/~/ws/lib/BufferUtil.js
Module not found: Error: Cannot resolve module 'bufferutil' in C:\Data\captchatheprize.com\dev\gamewww\node_modules\socket.io-client\node_modules\engine.io-clie
nt\node_modules\ws\lib
@ ./~/socket.io-client/~/engine.io-client/~/ws/lib/BufferUtil.js 10:19-40

WARNING in ./~/socket.io-client/~/engine.io-client/~/ws/lib/Validation.js
Module not found: Error: Cannot resolve module 'utf-8-validate' in C:\Data\captchatheprize.com\dev\gamewww\node_modules\socket.io-client\node_modules\engine.io-
client\node_modules\ws\lib
@ ./~/socket.io-client/~/engine.io-client/~/ws/lib/Validation.js 10:19-44

Ошибки:

ERROR in ./~/socket.io-client/~/engine.io-client/~/ws/lib/WebSocketServer.js
Module not found: Error: Cannot resolve module 'tls' in C:\Data\captchatheprize.com\dev\gamewww\node_modules\socket.io-client\node_modules\engine.io-client\node
_modules\ws\lib
@ ./~/socket.io-client/~/engine.io-client/~/ws/lib/WebSocketServer.js 15:10-24

ERROR in ./~/socket.io-client/~/engine.io-client/~/ws/~/options/lib/options.js
Module not found: Error: Cannot resolve module 'fs' in C:\Data\captchatheprize.com\dev\gamewww\node_modules\socket.io-client\node_modules\engine.io-client\node_
modules\ws\node_modules\options\lib
@ ./~/socket.io-client/~/engine.io-client/~/ws/~/options/lib/options.js 6:9-22

@ADumaine Были ли у вас проблемы с 1.3.7? Если не просто продолжайте использовать его, пока эта проблема не будет решена.

@Levino No 1.3.7 не имел никаких проблем. 1.4.3 действительно работает. Он подключается к серверу и передает данные, но я все еще разрабатываю локально и не использую такие вещи, как tls. Я пока оставлю версию 1.4.3 и протестирую любые обновления или вернусь, если их нет и мы готовы к этапу.

Сегодня мы публикуем более постоянное исправление!

Большой.

1.4.4 Исправляет это для меня. Спасибо!

1.4.4 исправил это и для меня !. Использовал npm с @latest. Перезагрузили сервер, никаких предупреждений и ошибок не было.
Спасибо!

все еще проблема для меня, я обновился до последней версии socket.io-client, ws и webpack и получил следующее

WARNING in ./~/ws/lib/BufferUtil.js
Module not found: Error: Cannot resolve module 'bufferutil' in /home/test/Projects/B_Components/node_modules/ws/lib
 @ ./~/ws/lib/BufferUtil.js 10:19-40

WARNING in ./~/ws/lib/Validation.js
Module not found: Error: Cannot resolve module 'utf-8-validate' in /home/test/Projects/B_Components/node_modules/ws/lib
 @ ./~/ws/lib/Validation.js 10:19-44

WARNING in ./~/mymodule-services/~/sails.io.js/~/request/lib/optional.js
Critical dependencies:
3:11-26 the request of a dependency is an expression
 @ ./~/mymodule-services/~/sails.io.js/~/request/lib/optional.js 3:11-26
webpack: bundle is now VALID.

@mrvini, пожалуйста, какие шаги нужно воспроизвести? У меня с сокетом следующее. [email protected] :

damien<strong i="8">@home</strong>:~/git/socket.io-client$ webpack . bundle.js
Hash: 321bb2158ab30d957364
Version: webpack 1.12.11
Time: 685ms
    Asset    Size  Chunks             Chunk Names
bundle.js  195 kB       0  [emitted]  main
   [0] ./lib/index.js 1.66 kB {0} [built]
   [1] ./lib/url.js 1.61 kB {0} [built]
  [14] ./lib/manager.js 12 kB {0} [built]
  [43] ./lib/socket.js 7.54 kB {0} [built]
  [46] ./lib/on.js 370 bytes {0} [built]
    + 46 hidden modules

@globexdesigns @ADumaine : сердце:

@darrachequesne , у меня следующая настройка
узел: v4.2.3

У меня есть локальный модуль, использующий библиотеки sails.io.js и socket.io-client.
sails.io.js: 0.12.2
socket.io-client: 1.4.4
Я включаю этот модуль в приложение и запускаю сервер webpack
webpack: 1.12.11
webpack-dev-сервер: 1.14.1

когда я запускаю webpack .bundle.js, все выглядит хорошо, однако, когда я пытаюсь запустить его как сервер разработчика webpack, он выдает ошибку, о которой я упоминал выше

@mrvini Мне очень жаль, похоже, я не могу воспроизвести:

damien<strong i="7">@home</strong>:~/test$ npm install [email protected]
[email protected] node_modules/socket.io-client
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
damien<strong i="8">@home</strong>:~/test$ webpack-dev-server --port 9000
Hash: 396f0bfb9d565b6f60f0
Version: webpack 1.12.11
Time: 19ms
webpack: bundle is now VALID.
http://localhost:9000/webpack-dev-server/
webpack result is served from /
content is served from /home/damien/test

image

Я что-то упустил?

Ой! Кажется, [email protected] зависит от [email protected] : ухмылка:: https://github.com/balderdashy/sails.io.js/blob/master/dependencies/socket.io.min.js# L1

Отсюда и проблема.

Спасибо @darrachequesne за то, что изучили это, вы правы, sails.io.js зависит от socket.io-client, но только как зависимости от разработчика, я считаю (в основном это зависит от запроса, который по какой-то причине вызывает основную проблему).

Critical dependencies:
3:11-26 the request of a dependency is an expression
 @ ./~/mymodule-services/~/sails.io.js/~/request/lib/optional.js 3:11-26

К вашему сведению, странно то, что с WS версии 0.8.1 вроде работает

снова работает, спасибо!

То же самое ... отсутствует много зависимостей ...

ERROR in ./~/sails.io.js/~/request/request.js
Module not foun @ ./~/sails.io.js/~/request/request.js 30:10-24

ERROR in ./~/sails.io.js/~/request/~/forever-agent/index.js
Module not found
 @ ./~/sails.io.js/~/request/~/forever-agent/index.js 6:10-24

ERROR in ./~/sails.io.js/~/request/~/forever-agent/index.js
Module not found: Error
 @ ./~/sails.io.js/~/request/~/forever-agent/index.js 7:10-24

ERROR in ./~/sails.io.js/~/request/~/mime/mime.js
Module not found
 @ ./~/sails.io.js/~/request/~/mime/mime.js 2:9-22

ERROR in ./~/socket.io-client/~/engine.io-client/~/ws/lib/WebSocketServer.js
Module not found
 @ ./~/socket.io-client/~/engine.io-client/~/ws/lib/WebSocketServer.js 15:10-24

ERROR in ./~/socket.io-client/~/engine.io-client/~/ws/~/options/lib/options.js
Module not found
 @ ./~/socket.io-client/~/engine.io-client/~/ws/~/options/lib/options.js 6:9-22

Я все еще вижу это:

[0] WARNING in ./~/sails.io.js/~/request/lib/optional.js
[0] Critical dependencies:
[0] 3:11-26 the request of a dependency is an expression
[0]  @ ./~/sails.io.js/~/request/lib/optional.js 3:11-26

Пакеты:

    "sails.io.js": "^0.13.3",
    "socket.io": "^1.4.4",
    "socket.io-client": "^1.4.4",

Я также пробовал эту конфигурацию веб-пакета:

 module: {
    noParse: ['ws']
  },
  externals: ['ws']

+1

+1

+1

В:

module: {
  ....
    noParse: ['ws']
  },
  externals: ['ws']

не похоже, чтобы это исправить. Теперь модуль ws не определен.

webpack version : 1.13.0
socket.io-client version : 1.4.4

У меня тоже проблемы с версии 1.4.x
Мой пример проекта - это простое приложение TODO со следующими версиями:

  • NodeJS v5.8.0,
  • NPM v3.7.3,
  • RethinkDB v2.3.2,
  • RethinkDbDash v2.2.18,
  • Последняя бета Aurelia,
  • Socket.io v1.4.6,
  • Socket.io-client v1.4.6,
  • WS v1.1.0

Конфигурация Webpack

  module: {
    noParse: ['ws']
  },
  node: {
    tls: "empty"
  },
  externals: ['fs','ws']

Это помогает удалить некоторые ошибки и предупреждения, но я все равно получаю следующее предупреждение и ошибки.

WARNING in ./~/socket.io-client/socket.io.js
Critical dependencies:
1:475-482 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
 @ ./~/socket.io-client/socket.io.js 1:475-482

ERROR in ./~/socket.io-client/package.json
Module parse failed: C:\test\client\node_modules\socket.io-client\package.json Unexpected token (2:9)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (2:9)
    at Parser.pp.raise (C:\test\client\node_modules\acorn\dist\acorn.js:920:13)
    at Parser.pp.unexpected (C:\test\client\node_modules\acorn\dist\acorn.js:1483:8)
    at Parser.pp.semicolon (C:\test\client\node_modules\acorn\dist\acorn.js:1462:73)
    at Parser.pp.parseExpressionStatement (C:\test\client\node_modules\acorn\dist\acorn.js:1976:8)
    at Parser.pp.parseStatement (C:\test\client\node_modules\acorn\dist\acorn.js:1754:188)
    at Parser.pp.parseBlock (C:\test\client\node_modules\acorn\dist\acorn.js:1991:21)
    at Parser.pp.parseStatement (C:\test\client\node_modules\acorn\dist\acorn.js:1735:19)
    at Parser.pp.parseTopLevel (C:\test\client\node_modules\acorn\dist\acorn.js:1648:21)
    at Parser.parse (C:\test\client\node_modules\acorn\dist\acorn.js:1616:17)
    at Object.parse (C:\test\client\node_modules\acorn\dist\acorn.js:882:44)
 @ ./~/socket.io/lib/index.js 10:20-55

ERROR in ./~/accepts/~/mime-db/db.json
Module parse failed: C:\test\client\node_modules\accepts\node_modules\mime-db\db.json Unexpected token (2:40)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (2:40)
    at Parser.pp.raise (C:\test\client\node_modules\acorn\dist\acorn.js:920:13)
    at Parser.pp.unexpected (C:\test\client\node_modules\acorn\dist\acorn.js:1483:8)
    at Parser.pp.semicolon (C:\test\client\node_modules\acorn\dist\acorn.js:1462:73)
    at Parser.pp.parseExpressionStatement (C:\test\client\node_modules\acorn\dist\acorn.js:1976:8)
    at Parser.pp.parseStatement (C:\test\client\node_modules\acorn\dist\acorn.js:1754:188)
    at Parser.pp.parseBlock (C:\test\client\node_modules\acorn\dist\acorn.js:1991:21)
    at Parser.pp.parseStatement (C:\test\client\node_modules\acorn\dist\acorn.js:1735:19)
    at Parser.pp.parseTopLevel (C:\test\client\node_modules\acorn\dist\acorn.js:1648:21)
    at Parser.parse (C:\test\client\node_modules\acorn\dist\acorn.js:1616:17)
    at Object.parse (C:\test\client\node_modules\acorn\dist\acorn.js:882:44)
 @ ./~/accepts/~/mime-db/index.js 11:17-37

Но даже при отображении ошибок проект и сокет по-прежнему работают должным образом с несколькими браузерами.

Также добавлен образец Github TODO, если кто-то хочет воспроизвести ошибки.

У меня такая же проблема с 1.4.6. и получаю те же ошибки, что и @ghiscoding. Я добавил noParse и externals как описано выше в потоке. У меня есть очень простое приложение, которое может быть полезно для отладки.

Единственные зависимости опубликованного приложения:

"socket.io": "^1.4.6",
"socket.io-client": "^1.4.6"

Чтобы воспроизвести ошибки, загрузите репо, запустите npm install затем запустите npm prepublish

@dbslone спасибо. У нас также должен быть тест в CI, который собирает проект с помощью webpack, чтобы избежать проблем в будущем.

Такие же предупреждения для Socket.IO 1.4.6, webpack 1.13.0.

WARNING in ./~/socket.io-client/socket.io.js
Critical dependencies:
1:475-482 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
 @ ./~/socket.io-client/socket.io.js 1:475-482

WARNING in ./~/express/lib/view.js
Critical dependencies:
78:29-56 the request of a dependency is an expression
 @ ./~/express/lib/view.js 78:29-56

WARNING in ./~/ws/lib/BufferUtil.js
Module not found: Error: Cannot resolve module 'bufferutil' in /home/rbozan/Git/mooiboymmo/server/node_modules/ws/lib
 @ ./~/ws/lib/BufferUtil.js 10:19-40

WARNING in ./~/ws/lib/Validation.js
Module not found: Error: Cannot resolve module 'utf-8-validate' in /home/rbozan/Git/mooiboymmo/server/node_modules/ws/lib
 @ ./~/ws/lib/Validation.js 10:19-44
var webpack = require("webpack");

module.exports = {
    output: {
        filename: "server.min.js"
    },

    target: "node",

    module: {
        loaders: [
            { test: /\.json$/, loader: "json-loader" }
        ]
    }
};

Есть ли в настоящее время обходной путь для этого? Я пробовал добавить noParse и externals но все еще вижу ошибки прямо выше. Используя socket.io 1.4.6, webpack 1.13.1

import io from 'socket.io-client/socket.io' кажется, работает для меня (в отличие от import io from 'socket.io' )

Я все еще получаю

WARNING in ./~/socket.io-client/socket.io.js
Critical dependencies:
1:475-482 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.

но ... по крайней мере, это работает

@WestleyArgentum Я тоже боролся с этим, но потом я прочитал, как использовать раздел в прочтении меня. пока вы используете socket.io на своем сервере, все должно быть в порядке

Автономная сборка socket.io-client автоматически предоставляется сервером socket.io как /socket.io/socket.io.js.

Я добавил <script type="text/javascript" charset="utf-8" src="/socket.io/socket.io.js"></script> в заголовок своего html и документа, и он выставил io как глобальный, поэтому нет необходимости импортировать.

Socket.IO: 1.4.6
Webpack: 1.13.0
Webpack имеет цель в config.

WARNING in ./~/socket.io-client/socket.io.js
Critical dependencies:
1:475-482 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
 @ ./~/socket.io-client/socket.io.js 1:475-482

WARNING in ./~/ws/lib/BufferUtil.js
Module not found: Error: Cannot resolve module 'bufferutil' in C:\maestro\frontend\node_modules\ws\lib
 @ ./~/ws/lib/BufferUtil.js 10:19-40

WARNING in ./~/ws/lib/Validation.js
Module not found: Error: Cannot resolve module 'utf-8-validate' in C:\maestro\frontend\node_modules\ws\lib
 @ ./~/ws/lib/Validation.js 10:19-44

Точно такая же проблема, как и у @omerts ... Кто-нибудь придумал исправление?

Это кажется смутно связанным с request / request / issues / 1529

Также получаем это с пакетами websocket и ws .

То же самое, получение этой ошибки с использованием ws

Socket.IO: 1.7.3
Webpack: 2.2.1
Модуль не найден: ошибка: не удается разрешить "socket.io-client / package"

@zweifisch ,

Тем не менее у меня есть «ПРЕДУПРЕЖДЕНИЕ в ./~/engine.io/lib/server.js. Критическая зависимость: запрос зависимости является выражением» и другие, похожие на те, что были от людей выше.

Я использую Angular2. Может конфиг поможет:

const path = require('path');
const ProgressPlugin = require('webpack/lib/ProgressPlugin');
const ProvidePlugin = require('webpack/lib/ProvidePlugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const autoprefixer = require('autoprefixer');
const postcssUrl = require('postcss-url');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

const { NoEmitOnErrorsPlugin, LoaderOptionsPlugin, WatchIgnorePlugin } = require('webpack');
const { BaseHrefWebpackPlugin } = require('@angular/cli/plugins/webpack');
const { CommonsChunkPlugin } = require('webpack').optimize;
const { AotPlugin } = require('@ngtools/webpack');

const nodeModules = path.join(process.cwd(), 'node_modules');
const entryPoints = ["inline","polyfills","sw-register","styles","vendor","main"];
const baseHref = undefined;
const deployUrl = undefined;

module.exports = {
  "devtool": "source-map",
  "resolve": {
    "extensions": [
      ".ts",
      ".js",
      ".json"
    ],
    "modules": [
      "./node_modules"
    ],
    "alias": {
      "config": "config/config.dev.js"
    }
  },
  "resolveLoader": {
    "modules": [
      "./node_modules"
    ]
  },
  "entry": {
    "main": [
      "./app/main.ts"
    ],
    "polyfills": [
      "./app/polyfills.ts"
    ],
    "styles": [
      "./dist/style.dev.css"
    ]
  },
  "output": {
    "path": path.join(process.cwd(), "dist/dev"),
    "filename": "[name].bundle.js",
    "sourceMapFilename": "[name].bundle.js.map",
    "chunkFilename": "[id].chunk.js"
  },
  "module": {
    "rules": [
      {
        "enforce": "pre",
        "test": /\.js$/,
        "loader": "source-map-loader",
        "exclude": [
          /\/node_modules\//
        ]
      },
      {
        "test": /\.json$/,
        "loader": "json-loader"
      },
      {
        "test": /\.html$/,
        "loader": "raw-loader"
      },
      {
        "test": /\.(eot|svg)$/,
        "loader": "file-loader?name=[name].[hash:20].[ext]"
      },
      {
        "test": /\.(jpg|png|gif|otf|ttf|woff|woff2|cur|ani)$/,
        "loader": "url-loader?name=[name].[hash:20].[ext]&limit=10000"
      },
      {
        "exclude": [
          path.join(process.cwd(), "dist/style.dev.css")
        ],
        "test": /\.css$/,
        "loaders": [
          "exports-loader?module.exports.toString()",
          "css-loader?{\"sourceMap\":true,\"importLoaders\":1}",
          "postcss-loader"
        ]
      },
      {
        "exclude": [
          path.join(process.cwd(), "dist/style.dev.css")
        ],
        "test": /\.less$/,
        "loaders": [
          "exports-loader?module.exports.toString()",
          "css-loader?{\"sourceMap\":true,\"importLoaders\":1}",
          "postcss-loader",
          "less-loader"
        ]
      },
      {
        "include": [
          path.join(process.cwd(), "dist/style.dev.css")
        ],
        "test": /\.css$/,
        "loaders": ExtractTextPlugin.extract({
          "use": [
            "css-loader?{\"sourceMap\":false,\"importLoaders\":1}", // Don't make sourceMap true, because it will break fonts loading
            "postcss-loader"
          ],
          "fallback": "style-loader",
          "publicPath": ""
        })
      },
      {
        "include": [
          path.join(process.cwd(), "dist/style.dev.css")
        ],
        "test": /\.less$/,
        "loaders": ExtractTextPlugin.extract({
          "use": [
            "css-loader?{\"sourceMap\":false,\"importLoaders\":1}", // Don't make sourceMap true, because it will break fonts loading
            "postcss-loader",
            "less-loader"
          ],
          "fallback": "style-loader",
          "publicPath": ""
        })
      },
      {
        "test": /\.ts$/,
        "loader": "@ngtools/webpack"
      }
    ],
    /*noParse: [
        /\/ws\//,
        /socket\.io\/lib\/index\.js/
    ]*/
  },
  "plugins": [
    new NoEmitOnErrorsPlugin(),
    new ProgressPlugin(),
    new ProvidePlugin({
        $:"jquery",
        jQuery:"jquery"
    }),
    new HtmlWebpackPlugin({
      "template": "./index.html",
      "filename": "./index.html",
      "hash": false,
      "inject": true,
      "compile": true,
      "favicon": false,
      "minify": false,
      "cache": true,
      "showErrors": true,
      "chunks": "all",
      "excludeChunks": [],
      "title": "Webpack App",
      "xhtml": true,
      "chunksSortMode": function sort(left, right) {
        let leftIndex = entryPoints.indexOf(left.names[0]);
        let rightindex = entryPoints.indexOf(right.names[0]);
        if (leftIndex > rightindex) {
            return 1;
        }
        else if (leftIndex < rightindex) {
            return -1;
        }
        else {
            return 0;
        }
    }
    }),
    new BaseHrefWebpackPlugin({}),
    new CommonsChunkPlugin({
      "name": "inline",
      "minChunks": null
    }),
    new CommonsChunkPlugin({
      "name": "vendor",
      "minChunks": (module) => module.resource && module.resource.startsWith(nodeModules),
      "chunks": [
        "main"
      ]
    }),
    new ExtractTextPlugin({
      "filename": "[name].bundle.css",
      "disable": true
    }),
    new LoaderOptionsPlugin({
      "sourceMap": true,
      "options": {
        "postcss": [
          autoprefixer(),
          postcssUrl({"url": (URL) => {
            // Only convert absolute URLs, which CSS-Loader won't process into require().
            if (!URL.startsWith('/')) {
                return URL;
            }
            // Join together base-href, deploy-url and the original URL.
            // Also dedupe multiple slashes into single ones.
            return `/${baseHref || ''}/${deployUrl || ''}/${URL}`.replace(/\/\/+/g, '/');
        }})
        ],
        "lessLoader": {
          "sourceMap": true
        },
        "context": ""
      }
    }),
    new AotPlugin({
      "mainPath": "app/main.ts",
      "hostReplacementPaths": {},
      "exclude": [],
      "tsConfigPath": "tsconfig.json",
      "skipCodeGeneration": true
    }),
    new BundleAnalyzerPlugin({
      analyzerMode: "static",
      openAnalyzer: false,
      reportFilename: 'analyzer/report.html',
    }),
    new WatchIgnorePlugin([
      path.resolve(__dirname, './dist/dev/analyzer'),
      path.resolve(__dirname, './node_modules'),
    ])
  ],
  "node": {
    "fs": "empty",
    "global": true,
    "crypto": "empty",
    "tls": "empty",
    "net": "empty",
    "process": true,
    "module": false,
    "clearImmediate": false,
    "setImmediate": false
  }
};

Предупреждения пропали когда я включил

import * as io from "socket.io-client";

вместо того

import * as io from "socket.io";

Тем не менее, у меня поведение как в №1088. Минимальное приложение с ошибкой находится в этой теме.

_Edit: Решил мою проблему. Это было не из-за socket.io._

@metamaker Большое спасибо: +1:

Я получаю следующую ошибку с более поздними версиями socket.io и webpack 2

Module not found: Error: Can't resolve 'socket.io-client/package' in 'xxx/server2/node_modules/socket.io/lib'
Мне нужно изменить package --> package.json в исходном файле socket.io lib / index.js, чтобы исправить это.

var clientVersion = require('socket.io-client/package.json').version;

webpack.config.js

let path = require('path');
const { GlobCopyWebpackPlugin } = require('@angular/cli/plugins/webpack');

module.exports = {
  devtool: false,

  resolve: {
    modules: [
      'node_modules',
      path.resolve(__dirname, 'src')
    ],
    extensions: ['.ts', '.js'],
    alias: {
      // FIXME: Module not found: Error: Can't resolve 'socket.io-client/package' in '/Developer/Work/iot/hub/server2/node_modules/socket.io/lib'
      // "socket.io-client/package": "empty-module",
      "hiredis": "empty-module",
    }
  },

  target: 'node',

  resolveLoader: {
    modules: [
      'node_modules'
    ]
  },

  entry: {
    main: './src/index',
    vendor: [
      'nest.js',
      'rxjs'
    ]
  },

  output: {
    path: path.resolve(__dirname, './dist/build'),
    filename: '[name].server.bundle.js',
    chunkFilename: "[id].server.chunk.js"
  },

  module: {
    rules: [
      { test: /\.ts$/, use: 'ts-loader' },
      { test: /\.json$/, loader: 'json-loader' },
      { test: /\.html$/, loader: 'raw-loader' },
      { test: /\.(eot|svg)$/, loader: 'file-loader?name=[name].[hash:20].[ext]' },
      { test: /\.js.map/, loader: 'raw-loader' },
    ]
  },

  "plugins": [
    new GlobCopyWebpackPlugin({
      "patterns": [
        "config",
        "data"
      ],
      "globOptions": {
        "cwd": "./",
        "dot": true,
        "ignore": "**/.gitkeep"
      }
    }),
  ]
};

См. Пример здесь: https://github.com/socketio/socket.io/tree/master/examples/webpack-build

Правильный синтаксис должен быть import io from 'socket.io-client';

Кроме того, ошибка Can't resolve 'socket.io-client/package' должна быть исправлена https://github.com/socketio/socket.io/pull/2960.

Надеюсь, это поможет! Если нет, повторно откройте проблему с помощью примера, воспроизводящего проблему, спасибо!

@darrachequesne

когда я пытаюсь импортировать с

import io from 'socket.io-client'

TS сообщает мне, что у модуля нет экспорта по умолчанию

@crebuh
Добавьте типы для машинописного текста.
npm i @types/socket.io-client

@ kdw3lch

нет, это не работает. У меня уже были типы в версии 1.4.29, и я обновил socket.io-client с 1.7.3 до 2.0.3, все та же проблема.

может быть, мой tsconfig.json ошибочен, есть идеи?

@crebuh Надо было читать внимательнее!
import * as io from 'socket.io-client'

Я вижу эту проблему с webpack ^ 2.0.0 и без socket.io в пакете. Когда я запускаю карму, я получаю это.

Не уверен, что делать дальше. Отладка ITO.

добавление socket.io-client к зависимостям в моем package.json устранило проблему для меня

У меня была аналогичная проблема, когда я проверял существующий проект.
Я запускаю npm -i, все зависимости были установлены, но появляется такая ошибка:

"Не удается разрешить" engine.io-client ""

Исправлено установкой socket.io-client.

npm я socket.io-client

Была ли эта страница полезной?
0 / 5 - 0 рейтинги