无法在反应中导入模块

时间:2020-06-15 14:32:48

标签: javascript node.js reactjs import

我已经制作了这个实用程序,我想将其导入另一个文件:

const fetch = require('node-fetch');

/**
 * @todo Add documentation
 */
class SimplicateApi { 
    constructor(key,secret){
        this._key = key; 
        this._secret = secret; 
        this.baseUrl = 'https://simplicate.nl/api/v2'; 

        this.options = {
            headers: { 
                'Content-Type': 'application/json', 
                'Authentication-Key' : this._key, 
                'Authentication-Secret' : this._secret
            }
        }
    }

    get(endpoint) {
        return fetch(`${this.baseUrl}${endpoint}`, this.options)
        .then(res => res.json())
        .then(json => json);
    }
}

export default SimplicateApi;

在另一个这样导入的文件中:

import SimplicateApi from '../../utils/SimplicateApi';

我收到的错误:

(函数(导出,需求,模块,__ filename,__ dirname){ 来自“ ../../utils/SimplicateApi”的{SimplicateApi}; ^

SyntaxError:意外令牌{ 使用新脚本(vm.js:80:7) 在createScript(vm.js:274:10) 在Object.runInThisContext(vm.js:326:10) 在Module._compile(内部/模块/cjs/loader.js:664:28) 在Object.Module._extensions..js(内部/模块/cjs/loader.js:712:10) 在Module.load(内部/模块/cjs/loader.js:600:32) 在tryModuleLoad(内部/模块/cjs/loader.js:539:12) 在Function.Module._load(internal / modules / cjs / loader.js:531:3)
在Function.Module.runMain(内部/模块/cjs/loader.js:754:12)
在启动时(internal / bootstrap / node.js:283:19)PS C:\ Users \ klmaa \ OneDrive \ Bureaublad \ dexhub \ client \ src \ components \ cmInf

我删除了所有内容,甚至是提取内容,并且只导出了这样的类:

// import fetch from 'node-fetch';

/**
 * @todo Add documentation
 */
class SimplicateApi { 

}

export default SimplicateApi; 

现在我这样导入它:

import SimplicateApi from '../../utils/SimplicateApi';

错误仍然看起来像:

(function (exports, require, module, __filename, __dirname) { import SimplicateApi from '../../utils/SimplicateApi';
                                                                     ^^^^^^^^^^^^^

SyntaxError: Unexpected identifier
    at new Script (vm.js:80:7)
    at createScript (vm.js:274:10)
    at Object.runInThisContext (vm.js:326:10)
    at Module._compile (internal/modules/cjs/loader.js:664:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)     
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)  
    at startup (internal/bootstrap/node.js:283:19)
PS C:\Users\klmaa\OneDrive\Bureaublad\dexhub\client\src\components\cmInf

1 个答案:

答案 0 :(得分:1)

您的代码混合了CommonJs moduleES6 module

在反应中,您应该使用ES6模块。 React不支持CommonJs模块。您需要为此配置Babel。

const fetch = require('node-fetch'); // this wronng import syntax in React.

更改应为

// if you are in react.
    import fetch from 'node-fetch'; // for react

//if you are in Node.
class SimplicateApi { 

}

module.exports = SimplicateApi;