У меня есть каталог payments с двумя файлами: constants.js и controller.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';
(function (exports, require, module, __filename, __dirname) { import { STRIPE_CONSTANTS, SKU_CONSTANTS } from './constants'; ^
SyntaxError: Unexpected token {
Что я здесь делаю неправильно? Спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Похоже, вы выполняете код, используя среду выполнения узла, которая еще не реализовала ES modules. (Это будет работать в браузерах, если вы сначала используете транспилятор для преобразования из ES6 в ES5)
Вам нужно использовать require для импорта модуля и exports для их экспорта.
ES modules был реализован в узле 8.5.0 и более поздних версиях, но предостережение заключается в том, что имя файла должно заканчиваться на .mjs, чтобы они не нарушали существующий код.
константы.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
}
контроллер.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');
Конечно. Это был бы еще один способ
Или внедрите babel в свое приложение Node с помощью
@babel/register.