Error: Cannot find module "socket.io-client/package" when building with webpack

Error: Cannot find module "socket.io-client/package" when building with webpack

尝试使用 socket.io 构建简单的聊天服务器应用程序,并 assemble 使用 webpack 将其压缩到一个 js 文件中。应用程序在没有 webpack 组装的情况下运行良好。但是当我尝试使用 webpack assemble 我所有的脚本时,它会抛出错误:

Error: Cannot find module "socket.io-client/package"

我在 socket.io 库中找到了需要调用方法的地方。它在 socket.io/lib/index.js 文件中的第 11 行。

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

据我所知,socket.io 需要 package.json 它的依赖项 socket.io-客户端库。我试图添加一个 json 加载程序,但它没有帮助。不知道下一步怎么办。

main.js:

var io = require('socket.io');
var listener = io(9999);
...

webpack.config

var webpack = require('webpack');

module.exports = {
    entry: './src/main.js',
    target: 'node',
    output: {
        path: './temp',
        filename: 'chat-server.js'
    },
    module: {
        loaders: [
            { test: /\.json$/, loader: 'json' }
        ]
    }
}

您需要 json-loader。安装它。

我认为您还需要告诉 webpack 查找 json 文件。您可以使用 resolve.extensions 选项来做到这一点。只需在此处包含 '.json'

我建议的更好的解决方案是使用 webpack replace plugin 并将该字符串替换为实际版本。像这样:

new webpack.NormalModuleReplacementPlugin('require(\'socket.io-client/package\').version', require('socket.io-client/package').version)