Estaba implementando algo en un akamai edgeworker y, por lo tanto, estaba usando el paquete acumulativo de nodos. Uno de los paquetes que tengo usa require('crypto') lo que me causa problemas, ya que parece que no puedo obtener el paquete acumulativo para incluir el código. Pude solucionarlo y obtenerlo, por lo que no tengo la importación en la parte superior, pero ahora TypeError: crypto.randomFillSync is not a function . Solo me preguntaba cómo puedo implementar algo que requiere criptografía en Edgeworker. mi archivo rollup.config actual es:
banner.js
var window = {}; var TextDecoder = function() {}; var setTimeout = function(callback) { callback(); };resumen.config.js
import * as fs from "fs"; import resolve from "@rollup/plugin-node-resolve"; import json from "@rollup/plugin-json"; import commonjs from "@rollup/plugin-commonjs"; import nodePolyfills from 'rollup-plugin-node-polyfills'; import { babel } from '@rollup/plugin-babel'; const BANNER = fs.readFileSync("./src/banner.js").toString(); function getPlugins(babelConfig) { return [ // Convert CommonJS modules to ES6 commonjs(), nodePolyfills(), // Resolve modules from node_modules resolve({ // use the "browser" property in package.json browser: true, preferBuiltins: false }), babel(babelConfig), // Package json data as an ES6 module json() ]; } export default [ { input: "src/index.js", output: { banner: BANNER, name: "main", file: "dist/main.js", format: "esm", sourcemap: false }, external: ['cookies', 'http-request', 'log', 'create-response'], plugins: getPlugins( { inputSourceMap: true, sourceMaps: true, exclude: ["node_modules/**", /\/core-js\//], presets: [ [ "@babel/preset-env", { useBuiltIns: "usage", corejs: 3, modules: false, targets: { browsers: [ "last 2 Chrome versions", "last 2 Firefox versions", "last 2 Safari versions" ] } } ] ], plugins: [] } ) } ];el módulo crypto se basa en tener un Node.js o un entorno de navegador, ya que proporciona la implementación al envolver las API de la plataforma subyacente. Akamai EdgeWorkers aún no proporciona una funcionalidad criptográfica nativa, por lo que deberá utilizar una biblioteca JS que proporcione una implementación JS pura.
He tenido éxito con el uso crypto-es ( https://www.npmjs.com/package/crypto-es ) siempre que tenga cuidado de observar los límites de la CPU.