【问题标题】:Error: Cannot find module "socket.io-client/package" when building with webpack错误:使用 webpack 构建时找不到模块“socket.io-client/package”
【发布时间】:2015-12-19 23:46:47
【问题描述】:

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

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-client 库。我试图添加一个 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' }
        ]
    }
}

【问题讨论】:

    标签: node.js socket.io webpack


    【解决方案1】:

    您需要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)
    

    【讨论】:

    • 谢谢,Louy,它有帮助!
    猜你喜欢
    • 2017-01-06
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多