async-storage SyntaxError 使用 Babel7 转译时出现意外标识符
async-storage SyntaxError Unexpected identifier while transpiling with Babel7
使用@react-native-community/async-storage 并在我的 react-native 环境中使用以下 npm 命令转译后。
"test": "NODE_ENV=test ./node_modules/.bin/mocha --timeout 5000 --require @babel/register \"./src/shared/__tests__/**/*.spec.js\""
我做了一些研究,但没有白费。但我发现它也发生在 Jest 身上。
这是我的babel.config.js
module.exports = {
env: {
production: {
},
test: {
presets: [
'@babel/preset-env'
],
},
},
};
我只测试非 jsx 代码,所以@babel/preset-env 似乎工作正常。
node_modules/@react-native-community/async-storage/lib/index.js:5
import AsyncStorage from './AsyncStorage';
^^^^^^^^^^^^
SyntaxError: Unexpected identifier
好像没人喜欢回答开玩笑的菜鸟问题....
无论如何,在开始学习玩笑时,我遇到了一些并不能反映实际错误的有趣错误信息。开发人员可以考虑一些可能的情况。
- 你没有嘲笑你的模块说 A_module 在 node_modules 里面,所以其中一个模块说 B_modules 在 A_modules 里面使用来自 React 的 NativeModules所以 Jest 无法执行测试。请查看堆栈跟踪或使用调试器找出您更喜欢模拟哪一个。
- 模拟一个使用NativeModules的模块(类似于第1点,但更直接简洁)
- 在继续之前,您需要更透彻地理解笑话。阅读文档很好,但当你认为合适时跳到示例。尤其是检查你真正需要的 examples 并阅读相关的。很多时候,不是你的 Babel 设置就是错误的 mocking 方法。
- 使用 jest.mock 而不是 jest.genMockFromModule。为什么?有一些函数或 init 函数会导致您的测试在此语句中崩溃。因为它调用 NativeModules 或开玩笑不允许的东西。改用模拟。
本题解答:请参考本.
谢谢
使用@react-native-community/async-storage 并在我的 react-native 环境中使用以下 npm 命令转译后。
"test": "NODE_ENV=test ./node_modules/.bin/mocha --timeout 5000 --require @babel/register \"./src/shared/__tests__/**/*.spec.js\""
我做了一些研究,但没有白费。但我发现它也发生在 Jest 身上。
这是我的babel.config.js
module.exports = {
env: {
production: {
},
test: {
presets: [
'@babel/preset-env'
],
},
},
};
我只测试非 jsx 代码,所以@babel/preset-env 似乎工作正常。
node_modules/@react-native-community/async-storage/lib/index.js:5
import AsyncStorage from './AsyncStorage';
^^^^^^^^^^^^
SyntaxError: Unexpected identifier
好像没人喜欢回答开玩笑的菜鸟问题....
无论如何,在开始学习玩笑时,我遇到了一些并不能反映实际错误的有趣错误信息。开发人员可以考虑一些可能的情况。
- 你没有嘲笑你的模块说 A_module 在 node_modules 里面,所以其中一个模块说 B_modules 在 A_modules 里面使用来自 React 的 NativeModules所以 Jest 无法执行测试。请查看堆栈跟踪或使用调试器找出您更喜欢模拟哪一个。
- 模拟一个使用NativeModules的模块(类似于第1点,但更直接简洁)
- 在继续之前,您需要更透彻地理解笑话。阅读文档很好,但当你认为合适时跳到示例。尤其是检查你真正需要的 examples 并阅读相关的。很多时候,不是你的 Babel 设置就是错误的 mocking 方法。
- 使用 jest.mock 而不是 jest.genMockFromModule。为什么?有一些函数或 init 函数会导致您的测试在此语句中崩溃。因为它调用 NativeModules 或开玩笑不允许的东西。改用模拟。
本题解答:请参考本
谢谢