导入对象时出错:SyntaxError:意外令牌{

时间:2019-04-24 18:24:05

标签: javascript node.js

我有一个payments目录,其中包含两个文件:constants.jscontroller.js

constants.js

export const STRIPE_CONSTANTS = {
  USD: 'usd',
  SKU: 'sku',
};

export const SKU_CONSTANTS = {
  first_sku: 'sku_abc123',
};

并在我的controller.js中导入,但出现错误:

import { STRIPE_CONSTANTS, SKU_CONSTANTS } from './constants';

  

(函数(导出,需求,模块,__ filename,__ dirname){从'./constants'导入{STRIPE_CONSTANTS,SKU_CONSTANTS};                                                                        ^

     

SyntaxError:意外令牌{

我在这里做错了什么?谢谢。

1 个答案:

答案 0 :(得分:4)

看起来您正在使用尚未实现ES modules的节点运行时执行代码。 (这将在浏览器上运行,但是如果您首先使用翻译器将ES6转换为ES5)

您需要使用require导入模块,并使用exports导出模块。

ES modules已在节点8.5.0和更高版本中实现,但需要注意的是,文件名应以.mjs结尾,以免破坏现有代码。

constants.js

const STRIPE_CONSTANTS = {
  USD: 'usd',
  SKU: 'sku',
};

const SKU_CONSTANTS = {
  first_sku: 'sku_abc123',
};

exports.STRIPE_CONSTANTS = STRIPE_CONSTANTS;
exports.SKU_CONSTANTS = SKU_CONSTANTS;

// If you want to export it as an object instead of that you 
// can use destructing when importing them you can use `module.exports`
// instead

module.exports = {
   STRIPE_CONSTANTS,
   SKU_CONSTANTS
}

controller.js

const constants = require('./constants');

const STRIPE_CONSTANTS = constants.STRIPE_CONSTANTS;
const SKU_CONSTANTS = constants.SKU_CONSTANTS;

// If constants was exported as an object using `module.exports`
// you can use destructing instead

const { STRIPE_CONSTANTS, SKU_CONSTANTS } = require('./constants');