Я использую gatsby ( v 2.18.4 ) для моего интерфейса. Это работало нормально, но после установки Moll ie пакета оплаты
я получаю сообщение об ошибке:
TypeError: fs__WEBPACK_IMPORTED_MODULE_1___default.a.readFileSync is not a function
Я обнаружил, что добавив это в gatsby-config . js файл решит проблему
exports.onCreateWebpackConfig = ({ actions }) => {
actions.setWebpackConfig({
node: {
fs: 'empty',
net: 'empty'
}
})
};
Но он не работает. Код в Mollie
пакете, для которого я получаю сообщение об ошибке:
import fs from 'fs';
function createHttpClient(options) {
const axiosOptions = cloneDeep(options);
delete axiosOptions.apiKey;
delete axiosOptions.versionStrings;
axiosOptions.baseURL = 'https://api.mollie.com:443/v2/';
if (undefined == axiosOptions.headers) {
axiosOptions.headers = {};
}
axiosOptions.headers['Authorization'] = `Bearer ${options.apiKey}`;
axiosOptions.headers['Accept-Encoding'] = 'gzip';
axiosOptions.headers['Content-Type'] = 'application/json';
var customVersionStrings = options.versionStrings;
if (undefined == customVersionStrings) {
customVersionStrings = [];
} else if (false == Array.isArray(customVersionStrings)) {
customVersionStrings = [customVersionStrings];
}
axiosOptions.headers['User-Agent'] = [`Node/${process.version}`, `Mollie/${version}`, ...customVersionStrings.map(versionString => {
// platform /version
const matches = /^([^\/]+)\/([^\/\s]+)$/.exec(versionString);
if (null === matches) {
if (-1 == versionString.indexOf('/') || versionString.indexOf('/') != versionString.lastIndexOf('/')) {
throw new Error('Invalid version string. It needs to consist of a name and version separated by a forward slash, e.g. RockenbergCommerce/3.1.12');
} else {
throw new Error('Invalid version string. The version may not contain any whitespace.');
}
} // Replace whitespace in platform name with camelCase (first char stays untouched).
const platform = matches[1].replace(/([^^])(\b\w)/g, (match, boundary, character) => [boundary, character.toUpperCase()].join('')).replace(/\s+/g, '');
const version = matches[2];
return [platform, version].join('/');
})].join(' ');
axiosOptions.httpsAgent = new https.Agent({
///////////////////////////////////////////////
//////////////// THIS LINE ///////////////////
cert: fs.readFileSync(path.resolve(__dirname, './cacert.pem'), 'utf8')
});
return axios.create(axiosOptions);
}
Ошибка в следующем коде:
axiosOptions.httpsAgent = new https.Agent({
cert: fs.readFileSync(path.resolve(__dirname, './cacert.pem'), 'utf8')
});
Есть идеи, как ее решить?