SyntaxError:无效或意外的令牌@import

Posted

技术标签:

【中文标题】SyntaxError:无效或意外的令牌@import【英文标题】:How to fix "SyntaxError: Invalid or unexpected token @import"? 【发布时间】:2018-05-12 11:45:12 【问题描述】:

我正在尝试将 Jest 和 Enzyme 添加到 React webpack 项目中。

一切正常,直到我向组件添加测试,使用导入谷歌字体的样式表。

我得到的错误是:

● Test suite failed to run
    /Users/dev/Code/Git/react-redux-webpack/src/App.sass:1
    ("Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest)@import url('https://fonts.googleapis.com/css?family=Barlow+Condensed')
                                                                                             ^
    SyntaxError: Invalid or unexpected token

sass 文件如下所示:

@import url('https://fonts.googleapis.com/css?family=Barlow+Condensed')

body
    background: #f9f9f9
    color: #444444
    font-family: 'Barlow Condensed', sans-serif
    text-align: center

.container
    width: 100%
    max-width: 960px
    margin: 0 auto

.container__logo--image
    position: absolute
    top: 50%
    left: 50%
    margin-left: -75px
    margin-top: -75px

我的.babelrc:


  "presets": [
    "react",
    "stage-0",
    [
      "env",
      
        "targets": 
          "node": "6.10",
          "browsers": ["last 2 versions", "safari >= 7"]
        
      
    ]
  ],
  "plugins": ["transform-class-properties"]

我在 webpack 中有所有必需的加载器,我可以整天构建和服务 sass,没有任何问题。这是我正在努力解决的 Jest 的介绍。

我已经推送了一个带有当前代码状态的分支https://github.com/nombienombie/react-redux-webpack/tree/feature/jest-unit-tests

【问题讨论】:

【参考方案1】:

我在 package.json 中添加了以下内容:

  "jest": 
    "moduleNameMapper": 
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
      "\\.(css|sass)$": "<rootDir>/__mocks__/styleMock.js"
    
  ,

并在 mocks 文件夹中添加以下内容:

fileMock.js

module.exports = 'test-file-stub';

styleMock.js

module.exports = 

【讨论】:

【参考方案2】:

由于它们不是由 Webpack 编译的,因此应该以某种方式处理通过测试导入的静态资产。

典型的方法包括模拟它们,因为它们与测试目的无关。开玩笑公开moduleNameMapper 选项以轻松模拟/代理它们。

【讨论】:

【参考方案3】:

在@Harry 给出的答案上还要补充一点,

如果您使用的是 jest.config.js 文件,则添加它而不是 package.json

  moduleNameMapper: 
    '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
      '<rootDir>/src/__mock__/fileMock.js',
    '\\.(css|less)$': '<rootDir>/src/__mock__/styleMock.js',
  ,

【讨论】:

以上是关于SyntaxError:无效或意外的令牌@import的主要内容,如果未能解决你的问题,请参考以下文章

JQuery:未捕获的 SyntaxError:无效或意外的令牌

Laravel 5 Uncaught SyntaxError:无效或意外令牌(红点)

bot.js 中的 Discord BOT 错误(SyntaxError:无效或意外令牌)

未捕获的SyntaxError:无效或意外的令牌

SyntaxError:意外的令牌“返回”

SyntaxError:意外的令牌'(' [关闭]