我正在使用React Native和Expo开发一个移动应用程序。
一切都很顺利,应用程序运行如期。
但在导入一些@expo库时,我的测试没有运行。
错误是经典的:SynTaxError:意外的令牌导入
给出erro的完整背景:
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import glyphMap
^^^^^^
SyntaxError: Unexpected token import
在google上搜索一个解决方案,我大部分时间都会得到与这里提到的类似的结果。
所以我在package.json
"jest": {
"transformIgnorePatterns": [
"/!node_modules\\/@expo"
],
"preset": "react-native"
}
我还尝试将模块名称更改为:
我还按照另一个答案添加了. babelrc,内容如下:
{
"presets": ["babel-preset-expo", "react-native"],
"env": {
"test": {
"plugins": [
"babel-plugin-dynamic-import-node"
]
}
}
}
不幸的是,这些解决方案都不适合我。
为了提供更多上下文,它是一个带有Expo的React Native应用程序,在OSX上运行,除了上面的错误之外,我还会收到另外5个警告。警告是关于重复的模块名称(可能不相关,但无论如何):
jest-haste-map: duplicate manual mock found:
Module name: ErrorUtils
Duplicate Mock path: /<project_dir>/node_modules/react-native/Libraries/Core/__mocks__/ErrorUtils.js
This warning is caused by two manual mock files with the same file name.
Jest will use the mock file found in:
/<project_dir>/node_modules/react-native/Libraries/Core/__mocks__/ErrorUtils.js
Please delete one of the following two files:
/<project_dir>/node_modules/react-native/node_modules/fbjs/lib/__mocks__/ErrorUtils.js
/project_dir/node_modules/react-native/Libraries/Core/__mocks__/ErrorUtils.js
jest-haste-map: @providesModule naming collision:
Duplicate module name: camelcase
Paths: /<project_dir>/node_modules/react-native/node_modules/yargs-parser/node_modules/camelcase/package.json collides with /<project_dir>/node_modules/react-native/node_modules/yargs/node_modules/camelcase/package.json
This warning is caused by a @providesModule declaration with the same name across two different files.
jest-haste-map: @providesModule naming collision:
Duplicate module name: bser
Paths: /<project_dir>/node_modules/react-native/node_modules/bser/package.json collides with /<project_dir>/node_modules/react-native/node_modules/fb-watchman/node_modules/bser/package.json
This warning is caused by a @providesModule declaration with the same name across two different files.
jest-haste-map: @providesModule naming collision:
Duplicate module name: core-js
Paths: /<project_dir>/node_modules/react-native/node_modules/core-js/package.json collides with /<project_dir>/node_modules/react-native/node_modules/fbjs/node_modules/core-js/package.json
This warning is caused by a @providesModule declaration with the same name across two different files.
jest-haste-map: @providesModule naming collision:
Duplicate module name: yargs
Paths: /<project_dir>/node_modules/react-native/node_modules/yargs/package.json collides with /<project_dir>/node_modules/react-native/node_modules/uglify-js/node_modules/yargs/package.json
This warning is caused by a @providesModule declaration with the same name across two different files.
版本:react native:0.46.1@expo/vector icons:5.1.0 jest:20.0.4
还有其他想法吗?
****更新****
将transformIgnorePatterns更改为“/!node_modules\/\@expo”不会使其正常工作,但至少会更改为另一个错误。
Invariant Violation: Native module cannot be null.
at invariant (node_modules/react-native/node_modules/fbjs/lib/invariant.js:44:7)
at new NativeEventEmitter (node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js:31:1)
at Object.<anonymous> (node_modules/expo/src/Location.js:6:26)
at Object.<anonymous> (node_modules/expo/src/Expo.js:8:1)
我也遇到了同样的问题。我最终通过删除和重新安装jest-expo来解决它。确保您的jest-expo版本与您的Expo版本相匹配。
npm卸载jest-expo npm缓存清理#或npm缓存验证(如果节点5)npm安装--save-dev jest-expo
问题内容: 我的项目中已经实现了其他相关问题中提供的解决方案,例如在.babelrc中包含正确的预设(es2015)。 我有两个项目(分别称为A和B),它们都使用ES6模块语法。在项目A中,我导入了通过npm安装的项目B,该项目位于node_modules文件夹中。当我为项目A运行测试套件时,出现错误: SyntaxError:意外的令牌导入 在此之前,项目B声称存在以下错误代码行: (函数(导出
在其他相关问题中提供的解决方案,例如在中包括适当的预设(es2015)。babelrc已在我的项目中实现。 我有两个项目(我们称它们为A和B),它们都使用ES6模块语法。在项目A中,我正在导入通过npm安装的项目B,该项目位于node_modules文件夹中。当我为项目A运行测试套件时,我得到了错误: SyntaxError:意外的令牌导入 前面是项目B中的这一错误代码行: (函数(导出、要求、模
应用程序。js公司 在执行上述代码时,我得到以下错误。 当我将鼠标悬停在线上方时,会出现这个错误 在我的VS代码中。 当我使用node运行代码时,即在上。我在终端中收到以下错误: 我做错了什么?我希望最后的obj的值是{1:,2:,3:}
在My Gulpfile.js错误部分: 我的包裹。json: 我运行并得到以下错误。 在终端屏幕中: gulp.task('webpack',gulp.series(async()=
问题内容: 我不明白怎么了。我在其他论坛上讨论了翻译和通天塔。我需要做什么? 我的代码: 和错误 问题答案: ES6导入是最近引入的功能,并且Node的当前稳定版本尚不支持它们。Node.js问题跟踪器对此存在一个未解决的问题 -但在V8和Node添加对此功能的支持之前,您将需要使用编译器(最受欢迎的是babel)才能使用导入。 为了快速尝试转译,babel提供了基于Web的REPL。这段演示了您
问题内容: 我键入的代码与《 Linux命令行:完整介绍》 (第369页)相同,但提示错误: 代码是这样的: 我想了解是什么导致了错误?如何修改代码?我的系统是Ubuntu。 问题答案: 和之间必须有一个空格,如下所示: 这些(及其组合)也都是 不正确的 : 另一方面,这些都可以: 顺便说一句,这些是等效的: 这些也等效: 而且,您的脚本的中间部分应该像这样更好: (我也将引号中的引号删除了,因为