无法获取rollbar.js来构build基于节点/ webpack的项目

我们希望在我们的node / webpack / babel / ES6 / React-based项目中使用Rollbar.js。 这是不是100%清楚什么是正确的NPM包使用,但它似乎是这样的:

https://www.npmjs.com/package/rollbar

从那里,说明是非常简单的:添加一个引用package.json ,安装,并离开你去。 所以这里是package.json的引用:

"rollbar": "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 

我无法理解这一点。 它似乎build议我的webpack项目不能parsingRollbar的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, } }; 

第二次更新:

仍然无法build立的东西,但我有更多的信息。 如果我从代码中删除滚动条导入,那么控制台错误消失。 我试过两种方式导入Rollbar,如下所示:

import rollbar from "rollbar"; var Rollbar = require('rollbar');

两种尝试都会产生相同的错误。 如果我在我的webpack.config.js文件中添加node: {fs: "empty"} ,那么'fs'错误消失,但是“合适的加载器”错误仍然存​​在。

我遇到了同样的问题。 我是通

  1. 使用npm install --save fs 。 或者,您可以添加node: {fs: "empty"}到您的webpackconfiguration,如评论中所build议的。 这些任何一个照顾在rollbar / lib / parser.js的fs导入。
  2. 安装一个json加载器 ,然后将这个加载器添加到您的webpackconfiguration下的模块 – >加载器。 这会告诉webpack在加载JSON文件时应该使用json加载器。 Webpack应该能够在rollbar / lib / notifier.js中导入package.json
     module: { loaders: [ { test: /\.json$/, loader: "json" }, ... ], ... }