Jest 和 Webpack - 意外的令牌导入

2024-03-26

我很难设置我的测试套件。我有一个 React + Redux + Webpack 项目,正在尝试添加 Jest。我可以运行测试,但是我无法import任何东西到我的测试文件中。例如,当尝试导入我的 redux 操作时,我收到以下错误:

/Users/nicholashaley/Desktop/Work/Ada/app/test/test.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import * as actions from 'actions';
                                                                                             ^^^^^^
    SyntaxError: Unexpected token import

我猜我的 webpack 配置没有正确配置,所以无法识别import关键词。

我的 webpack 配置如下所示:

var webpack = require('webpack');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var path = require('path');
var AssetsPlugin = require('assets-webpack-plugin')
var assetsPluginInstance = new AssetsPlugin({filename: 'assets.json', prettyPrint: true})
var HtmlWebpackPlugin = require('html-webpack-plugin');

require('dotenv').config()

module.exports = {
    entry: './source/app.js',
    output: {
        path: __dirname + '/build',
        publicPath: '/',
        filename: 'bundle.js'
    },
    externals: {
        'locker': 'Locker'
    },
    stats : {
        children: false
    },
    devServer : {
        historyApiFallback: {
            disableDotRule: true
        },
        stats : {
            timings: false,
            assets: false,
            chunks: false,
            modules: false,
            children: false,
            publicPath: false
        },
        disableHostCheck: true
    },
    devtool: 'source-map',
    module: {
        loaders: [
            {
                test: /\.(jsx|js)$/,
                exclude: /node_modules/,
                loader: "babel-loader",
                query: { presets: [ 'es2015', 'react' ] }
            },
            {
                test: /\.scss$/,
                loader: ExtractTextPlugin.extract('css!sass')
            },
            {
                test: /\.(jpe?g|gif|png|woff|ttf|wav|mp3)$/,
                loader: "file"
            },
            {include: /\.json$/, loaders: ["json-loader"]},
            {
                test: /\.svg$/,
                loader: 'svg-sprite?' + JSON.stringify({
                    name: '[name]_[hash]',
                    prefixize: true
                })
            }
        ]
    },
    resolve: {
        root: path.resolve(__dirname),
        alias: {
            components: 'source/components',
            services: 'source/services',
            selectors: 'source/selectors',
            middleware: 'source/middleware',
            stylesheets: 'source/stylesheets',
            actions: 'source/actions',
            schemas: 'source/schemas',
            reducers: 'source/reducers',
            icons: 'static/icons'
        },
        extensions: ['', '.json','.js', '.jsx']
    }
};

以及我的 package.json 的相关部分:

{
  "scripts": {
    "build": "webpack",
    "start": "webpack-dev-server --port 3001 --inline --hot",
    "build-staging": "webpack --config ./webpack-staging.config.js",
    "build-prod": "webpack --config ./webpack-production.config.js",
    "deploy": "node deploy.js",
    "test": "jest",
    "test:watch": "npm test -- --watch"
  },
  "devDependencies": {
    "assets-webpack-plugin": "^3.5.0",
    "babel-core": "^6.14.0",
    "babel-jest": "^19.0.0",
    "babel-loader": "^6.2.9",
    "babel-polyfill": "^6.23.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "colors": "^1.1.2",
    "css-loader": "^0.26.1",
    "extract-text-webpack-plugin": "^1.0.1",
    "file-loader": "^0.10.1",
    "jest": "^19.0.2",
    "node-sass": "^3.4.2",
    "nodemon": "^1.9.1",
    "react-hot-loader": "^1.3.1",
    "recursive-readdir": "^2.0.0",
    "rimraf": "^2.5.4",
    "sass-loader": "^4.0.2",
    "style-loader": "^0.13.1",
    "svg-loader": "0.0.2",
    "svg-sprite-loader": "^0.3.0",
    "svg-url-loader": "^1.1.0",
    "uglify-js": "^2.7.3",
    "uglifycss": "0.0.21",
    "webpack": "^1.14.0",
    "webpack-dev-server": "^1.16.3"
  }
}

UPDATE

我添加了一个.babelrc文件与{"presets": ["es2015", "react"]}并且导入现在正在工作。我不完全理解为什么(特别是考虑到导入以前在源代码中工作)。

另外,我依赖于我的项目中的路径别名(如我的 webpack 配置中所定义),并且测试文件似乎没有考虑这些别名。


如果 loader 无法工作,你的 webpack.config.js 就会变得一团糟,因为如果你的 webpack 配置设置为正确使用 babel-loader,你就不需要 .babelrc 文件。下面是一个如何在不使用 .babelrc 文件的情况下使用 Webpack 加载模块的极简示例...正如您所看到的,我正在使用 babel-preset-latest 包。

module: {
      rules: [
          {
              loader: "babel-loader",
              options: {
                  presets: ["latest"]
              }
          }
      ]
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jest 和 Webpack - 意外的令牌导入 的相关文章

随机推荐

  • SQL Server,无法在主键字段中插入空值?

    我已经准备好在这件事上抓狂了 我对 MS SQL 还很陌生 还没有在任何地方看到过类似的帖子 当我尝试做这样的声明时 INSERT INTO qcRawMatTestCharacteristic VALUES NULL 1 1 1 1 1
  • Neo4j https 通信

    有没有办法只允许 https 而不是 http 与 Neo4j 服务器通信 另外 Neo4j Shell 的通信使用哪个通道 http 还是 https 这是来自 Neo4j 文档 HTTPS 支持 http docs neo4j org
  • Python 的按位求补运算符 (~ 波形符) 是如何工作的?

    为什么 2等于 3 如何 操作员工作 请记住 负数存储为二进制补码的正对应物 作为示例 以下是 2 的二进制补码表示形式 8 位 1111 1110 获得此值的方法是采用数字的二进制表示形式 取其补码 反转所有位 并加一 两个以 0000
  • 有条件地将键值对包含在哈希中[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有人可以帮我缩短以下方法吗 我从这个开始 我很喜欢 def self some hash foo gt bar end 现在我想添加一个可选键 我能想
  • 无法重新加载 nginx.service:需要交互式身份验证

    我正在使用 symfony 3 进行项目 项目运行在nginx服务器上 我正在尝试使用以下命令重新加载配置文件 从控制器 systemctl reload nginx Route testReloadConfig public functi
  • 如何枚举 USB 设备*并*对其进行读/写?

    我需要与一个自定义 USB 设备进行通信 它没有特定的驱动程序 该设备不显示为 dev tty I 发现 http www signal11 us oss udev 我该如何使用libudev枚举 USB 设备 假设我设法获得相应的stru
  • Java 中的克隆

    我在网上读到一段关于克隆的内容 但我不太明白 所以有人能解释清楚吗 如果类具有 Final 字段 则无法在克隆方法中为这些字段赋予值 这会导致正确初始化对象的最终字段出现问题 如果最终字段引用对象的某些内部状态 则克隆的对象最终会共享内部状
  • 恢复分页库 3 中的滚动位置

    我将 Paging Library 3 与 RemoteMediator 一起使用 其中包括从网络和本地 Room 数据库加载数据 每次我滚动到 RecyclerView 中的某个位置 导航到另一个片段 然后导航回带有列表的片段时 滚动状态
  • LibGDX 。绘制多行文本

    我正在尝试使用 libGDX 中的 BitmapFont 编写大文本 但它显示在一行上 用户只能看到文本的第一部分 如何使 bitmapFont 自动换行并在屏幕上显示整个文本 要么使用 n用于手动换行并通过渲染字体font drawMul
  • Node 和 Express:如何实现基本的 webhook 服务器

    我很难找到教程 我是 webhooks 的新手 除了对它们应该如何工作的一些基本描述之外 还没有使用或见过它们 我们的用例是在有新记录时更新 API 的用户 由于我们使用 Kafka 并已确定 最终一致性 因此另一个用途可能是在无法从 Ka
  • ListView 行标记 ala GMail

    我有兴趣创建一个 ListView 其中每一行都按照 GMail 3 0 中的方式进行标记 这会很好地分离左右 ListFragment 其他示例还包括 2 3 4 上的 Google 日历 例如颜色标记位于 ListView 的左侧 请参
  • 如何在带有 Boost Spirit 的 AST 中使用只有一个属性的类?

    我想使用 Boost Spirit 将文件解析为 AST 我的 AST 的根源是一个只有一个属性的类 typedef boost variant
  • 根据搜索条件查找列名和行名

    我有以下 Excel 电子表格 A B C D E F G 1 Q1 Q2 Q3 Q4 Search criteria 60 2 Asset 1 15 85 90 70 Column name Q4 3 Asset 2 40 80 45 6
  • Laravel getQueryString() 不带 &

    我正在尝试将包含部分 URL 的变量输出到我的页面上的 Javascript 中 当我这样做时 它会改变任何 into amp 这会破坏 URL 我尝试过使用str replace html entity decode htmlspecia
  • 如何使 C# Powershell Invoke 成员线程安全

    我有这项服务 当收到请求时 运行 powershell 命令并返回结果 这是调用者类代码 public class PowerShellScript public PowerShellScript public Object Invoke
  • 如何在面向 python 2.5.1 的项目目录中包含和使用 .eggs/pkg_resources

    我有 python egg 文件 它们存储在某些 py 代码的相对位置 问题是 我的目标是 python 2 5 1 计算机 这要求我的项目自包含在一个文件夹中 数十万台运行 Sugar 的 OLPC XO 8 2 1 版本笔记本电脑 这意
  • 将 Java Web 应用程序与 SAML SSO 集成

    我有一个 Restful Java Web 应用程序 将部署到许多不同的环境 在我的控制范围之外 这些环境将使用 SAML 2 0 SSO 解决方案 我的应用程序 我认为是 服务提供商 需要存储用户生成的状态 并使用内部业务逻辑来确定允许哪
  • 管理MapView的缓存

    我制作了一个基于 Google Maps API 的应用程序 问题是我的应用程序是为了在野外 没有网络的地方使用而设计的 因此 我想管理缓存 以确保在旅途中保存特定的图块并可用 我想在数据库中重定向它们 但任何方法都可以 目前 除了尝试重新
  • Facebook Javascript SDK:getLoginStatus 没有响应

    按照指示这一页 https developers facebook com docs javascript quickstart v2 5 我将 SDK 片段包含到我的页面中 但由于我没有任何 Facebook 应用程序 并且我只是尝试在我
  • Jest 和 Webpack - 意外的令牌导入

    我很难设置我的测试套件 我有一个 React Redux Webpack 项目 正在尝试添加 Jest 我可以运行测试 但是我无法import任何东西到我的测试文件中 例如 当尝试导入我的 redux 操作时 我收到以下错误 Users n