找不到模块:错误:无法解析“ node_modules / stompjs / lib”中的“ net”

时间:2019-01-20 09:23:43

标签: angular angular7

解决了一个未找到stompJS-lib的问题,在此问题上,我收到以下错误消息:

Module not found: Error: Can't resolve 'net' in '/../../../.../../../angular-app/node_modules/stompjs/lib'

9 个答案:

答案 0 :(得分:7)

使用以下命令解决了该问题:

 npm i net -S

答案 1 :(得分:6)

要在Arthur Costa answer上进行扩展,如果您使用的是NextJS,则可以在配置文件中添加一个配置,以防止特定导入时出现此问题。

将这些行添加到根项目文件夹中名为next.config.js的文件中:

module.exports = {
    webpack: (config, { isServer }) => {
        if (!isServer) {
            config.node = {
                net: 'empty'
            };
        }

        return config;
    }
}

如果其他内置模块出现问题,您也可以在net旁边添加这些模块。

来源:https://github.com/vercel/next.js/issues/7755#issuecomment-508633125

答案 2 :(得分:5)

webpack v5(添加到 module.exports 中的 webpack.config.js):

resolve: {
    fallback: {
        net: false
    }
},

答案 3 :(得分:2)

node: {
  net: 'empty',
},

如果使用的是webpack,则可以向其中添加此配置。

该问题已发布在github上,如果您需要更多信息和解释,可以找到它here

答案 4 :(得分:1)

如果您使用的是 Laravel,请执行以下操作:

  1. 安装:

    npm install util browserify-fs tls-browserify net-browserify stream-http https-browserify path-browserify crypto-browserify stream-browserify browserify-zlib os-browserify

  2. 在 Webpack.mix.js 中包含这个:

    mix.webpackConfig({ 解决: { 倒退: { "child_process": '空', "fs": require.resolve("browserify-fs"), "util": require.resolve("util"), "http": require.resolve("stream-http"), "https": require.resolve("https-browserify"), "tls": require.resolve("tls-browserify"), "net": require.resolve("net-browserify"), "crypto": require.resolve("crypto-browserify"), "path": require.resolve("path-browserify"), "os": require.resolve("os-browserify"), "stream": require.resolve("stream-browserify"), "zlib": require.resolve("browserify-zlib") } } });

如果您不使用 Laravel,请将其包含在:Webpack.config.js 或您的 Webpack 配置文件中。

resolve: {
    fallback: {
        "child_process": 'empty', 
        "fs": require.resolve("browserify-fs"), 
        "util": require.resolve("util"), 
        "http": require.resolve("stream-http"),
        "https": require.resolve("https-browserify"),
        "tls": require.resolve("tls-browserify"),
        "net": require.resolve("net-browserify"),
        "crypto": require.resolve("crypto-browserify"), 
        "path": require.resolve("path-browserify"),
        "os": require.resolve("os-browserify"), 
        "stream": require.resolve("stream-browserify"),
        "zlib": require.resolve("browserify-zlib")
    }
}

为什么会这样?

不要生他的气,他只想知道怎么处理,你需要指明相应的模块或者设置为'false'。

如果您知道这不能解决,您可以回滚安装:

npm remove util browserify-fs tls-browserify net-browserify stream-http https-browserify path-browserify crypto-browserify stream-browserify browserify-zlib os-browserify

替代

resolve: {
    fallback: {
        "child_process": false, 
        "process":  false, 
        "fs": false, 
        "util": false, 
        "http": false,
        "https": false,
        "tls": false,
        "net": false,
        "crypto": false, 
        "path": false,
        "os": false, 
        "stream": false,
        "zlib": false
    }
}

答案 5 :(得分:0)

ERROR in ./node_modules/@google/maps/node_modules/https-proxy-agent/index.js
Module not found: Error: Can't resolve 'net' in 'C:\.....\...\node_modules\@google\maps\node_modules\https-proxy-agent'
ERROR in ./node_modules/@google/maps/node_modules/https-proxy-agent/index.js
Module not found: Error: Can't resolve 'tls' in 'C:\...\....\node_modules\@google\maps\node_modules\https-proxy-agent'

此问题可通过安装: npm i tls -S 然后安装 npm我网-S

答案 6 :(得分:0)

这是因为Net是NodeJS的一部分,因此它在浏览器中不存在。 https://nodejs.org/api/net.html#net_net

更好地更新您的Webpack配置

node: {
  net: 'empty',
},

答案 7 :(得分:0)

为了扩展现有答案,特别是对于 stompjs,如果您只需要在浏览器环境中使用它,那么您可以使用基础 stomp.js - 它会在浏览器中正常运行.它位于/node_modules/stompjs/lib/stomp.js

因此,将此别名添加到您的 webpack 配置中即可解决该问题,而无需将特定的节点依赖项列入黑名单。

resolve: {
    alias: {
        'stompjs': __dirname + '/node_modules' + '/stompjs/lib/stomp.js',
    }
}

答案 8 :(得分:0)

这不是原始问题的直接答案,而是针对那些从搜索中遇到类似问题并打包使用 Node.js 运行的服务器端(或用户空间)应用程序的人。正确的解决方法是使用 Node 目标参数:

  -t, --target <value...>                Sets the build target e.g. node.