Node.js 无法在基于节点/网页包的项目中生成rollbar.js

Node.js 无法在基于节点/网页包的项目中生成rollbar.js,node.js,webpack,rollbar,Node.js,Webpack,Rollbar,我们希望在基于node/webpack/babel/ES6/React的项目中使用Rollbar.js。目前还不完全清楚什么是正确的NPM包,但似乎是这样的: 从这里开始,说明非常简单:添加对package.json的引用,安装,然后开始。下面是package.json中的参考: “滚动条”:“0.6.2”, 运行npm install似乎工作正常,但当我运行npm start时,控制台中出现以下错误: ERROR in ./~/rollbar/lib/parser.js Module not

我们希望在基于node/webpack/babel/ES6/React的项目中使用Rollbar.js。目前还不完全清楚什么是正确的NPM包,但似乎是这样的:

从这里开始,说明非常简单:添加对
package.json的引用,安装,然后开始。下面是
package.json
中的参考:

“滚动条”:“0.6.2”,

运行
npm install
似乎工作正常,但当我运行
npm start
时,控制台中出现以下错误:

ERROR in ./~/rollbar/lib/parser.js
Module not found: Error: Cannot resolve module 'fs' in [myProjectRoot]node_modules/rollbar/lib
 @ ./~/rollbar/lib/parser.js 7:9-22

ERROR in ./~/rollbar/package.json
Module parse failed: [myProjectRoot]node_modules/rollbar/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 ([myProjectRoot]node_modules/webpack/node_modules/acorn/dist/acorn.js:923:13)
    at Parser.pp.unexpected ([myProjectRoot]node_modules/webpack/node_modules/acorn/dist/acorn.js:1490:8)
    at Parser.pp.semicolon ([myProjectRoot]node_modules/webpack/node_modules/acorn/dist/acorn.js:1469:73)
    at Parser.pp.parseExpressionStatement ([myProjectRoot]node_modules/webpack/node_modules/acorn/dist/acorn.js:1994:8)
    at Parser.pp.parseStatement ([myProjectRoot]node_modules/webpack/node_modules/acorn/dist/acorn.js:1772:188)
    at Parser.pp.parseBlock ([myProjectRoot]node_modules/webpack/node_modules/acorn/dist/acorn.js:2009:21)
    at Parser.pp.parseStatement ([myProjectRoot]node_modules/webpack/node_modules/acorn/dist/acorn.js:1753:19)
    at Parser.pp.parseTopLevel ([myProjectRoot]node_modules/webpack/node_modules/acorn/dist/acorn.js:1666:21)
    at Parser.parse ([myProjectRoot]node_modules/webpack/node_modules/acorn/dist/acorn.js:1632:17)
    at Object.parse ([myProjectRoot]node_modules/webpack/node_modules/acorn/dist/acorn.js:885:44)
 @ ./~/rollbar/lib/notifier.js 14:18-44
我无法理解这一切。这似乎表明我的webpack项目无法解析Rollbar的
package.json
文件,但这似乎是不可能的,因为我的webpack项目还有无数其他NPM包,每个包都有自己的
package.json
文件

有人碰到过这个问题吗

更新:

如果相关,下面是我们完整的
webpack.config.js
文件:

const path = require('path');
const webpack = require('webpack');
const glob = require('glob');

const modulesDirectories = glob.sync('src/**');
const assetsDirectories = glob.sync('assets/**');
Array.prototype.push.apply(
    modulesDirectories,
    assetsDirectories
);
modulesDirectories.push('assets');
modulesDirectories.push('/');
modulesDirectories.push('node_modules');


const modulesDirectoriesWithoutFiles = modulesDirectories.filter(directory => {
    if (directory.slice(-4, -3) === '.' || directory.slice(-3, -2) === '.') {
        return false;
    }
        return true;
});


module.exports = {
  cache: true,
  devtool: 'cheap-module-eval-source-map',
  entry: [
    'eventsource-polyfill',
    'webpack-hot-middleware/client',
    './src/index.js'
  ],
  module: {
    loaders: [
            {
          test: /\.(js|jsx)$/,
          loader: 'babel',
          query: {
              // https://github.com/babel/babel-loader#options
              cacheDirectory: true
          },
          include: path.join(__dirname, 'src'),
          exclude: /node_modules/
        },
        { test: /\.css$/, loader: 'style-loader!css-loader' },
        { test: /\.woff|.ttf|.eot|.woff2$/, loader: `file-loader` },
        { test: /\.(png|jpe?g|gif|svg)$/, loader: `url-loader?limit=8192` },
        ]
    },
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/static/'
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin(),
    new webpack.DefinePlugin({
        FIREBASE_CONFIG: JSON.stringify({
                apiKey: [ourApiKey],
                authDomain: [ourDomain],
                databaseURL: [ourUrl],
                storageBucket: [ourBucket],
              })   
    })

  ],
  resolve: {
    extensions: ['', '.js', '.jsx'],
    root: __dirname,
    modulesDirectories: modulesDirectoriesWithoutFiles,
  } 
};
第二次更新:

仍然无法进行构建,但我有更多的信息。如果我从代码中删除Rollbar导入,那么控制台错误就会消失。我尝试了两种方式导入Rollbar,如下所示:

从“rollbar”导入rollbar
var Rollbar=require('Rollbar')


两次尝试都会产生相同的错误。如果我将
节点:{fs:“empty”}
添加到我的
webpack.config.js
文件中,则“fs”错误消失,但“适当的加载程序”错误仍然存在。

我遇到了相同的问题。我通过以下方式修复了它:

  • 使用
    npm安装--save fs
    安装
    fs
    。或者,您可以将
    节点:{fs:“empty”}
    添加到您的网页配置中,如注释中所示。其中任何一个都负责rollbar/lib/parser.js中的
    fs
    导入
  • 安装,然后将此加载程序添加到“模块->加载程序”下的网页配置中。这会通知webpack在加载json文件时应使用json加载程序。然后,Webpack应该能够在rollbar/lib/notifier.js中导入
    package.json

  • 您是否尝试过使用Rollbar开发人员()打开问题?已经完成。几个月前,已经有一个类似的问题被解决了。相似的程度足以让我增加内容,而不是打开一个新的问题,但不同的程度足以让我无法解决问题(原来的海报没有真正跟进,所以问题就结束了)。但是,Github repo的问题跟踪程序似乎没有那么活跃,所以我想在这里也提出这个问题。问题是,如果您使用的模块中存在问题,您要么让原始开发人员修复并重新发布,要么您必须自己修复。为了正确使用,您可能需要分叉模块,修复它,或者向原始模块提交PR,或者发布您自己的模块-这两个都意味着大量的工作。此外,在以前的问题中,请尝试将
    节点:{fs:'empty'}
    添加到您的网页包配置文件中。让我知道它是否有效。我刚刚安装了rollbar并发布了一条消息,它工作正常。不,模块有问题。请分享你的实现代码。
    module: {
        loaders: [
            {
                test: /\.json$/,
                loader: "json"
            },
            ...
        ],
        ...
    }