导入react-native-fetch-blob时出现意外令牌

Ris*_*oon 6 javascript node.js ecmascript-6 babeljs react-native

我们正在尝试使用以下代码导入react-native-fetch-blob软件包:

const RNFetchBlob = require('react-native-fetch-blob');
const firebase = require('firebase');
Run Code Online (Sandbox Code Playgroud)

但是,当我们尝试构建时,会出现如下所示的意外令牌导入语法错误。

C:\ Users \ ... \ node_modules \ react-native-fetch-blob \ index.js:5
import {
^^^^^^
SyntaxError:
在Object.exports.runInThisContext(vm.js:76: 16)
在Module._compile(module.js:513:28)
在Object.Module._extensions..js(module.js:550:10)
在Module.load(module.js:458:32)
在tryModuleLoad(模块.js:417:12)
在Function.Module._load(module.js:409:3)
在Module.require(module.js:468:17)
在require(内部/module.js:20:19)
在Object 。(C:\ Users \ ... \ build \ cloud \ file.js:159:243)在Module._compile(module.js:541:32)

我们正在使用ES6,而我们的.babelrc文件如下所示

"plugins": [
    ["transform-runtime", {
        "polyfill": false,
        "regenerator": true
    }]
],
"presets": ["react-native","es2015",]
Run Code Online (Sandbox Code Playgroud)

这个问题有方法解决吗?任何帮助将不胜感激!

谢谢!

Fox*_*unR 2

我能够通过为react-native-fetch-blob(在我的例子中为rn-fetch-blob)创建一个模拟来解决这个问题。这里建议的模拟对我有用: https: //github.com/wkh237/react-native-fetch-blob/issues/212#issuecomment-340706825

作为@scerelli,我也希望模拟发生在一个单独的地方,以便所有测试都可以使用它。将以下代码放入 /mocks/react-native-fetch-blob.js似乎对我有用:

const containsMock = jest.fn(); containsMock.mockReturnValueOnce({then: jest.fn()});

export default {
DocumentDir: () => {},
ImageCache: {
    get: {
        clear: () => {},
    },
},
fs: {
    exists: existsMock,
    dirs: {
        MainBundleDir: () => {},
        CacheDir: () => {},
        DocumentDir: () => {},
    },
    },
};
Run Code Online (Sandbox Code Playgroud)

它是 @SoundBlaster 解决方案的变体,只是在全局模拟文件中。这样我就不需要在测试代码中导入或隐式模拟任何内容。