Ошибка импорта узла hash.crypto - (!) Неразрешенные зависимости

У меня проблема с импортом hash от узла crypto пакет. Вот ошибка, которую я получаю:

ошибка

[~/Projects/rollup] yarn run build
yarn run v1.2.1
$ rollup -c

src/main.js → ./build/app.js...
(!) Unresolved dependencies
https://github.com/rollup/rollup/wiki/Troubleshooting#treating-module-as-external-dependency
crypto (imported by src/main.js)
(!) Missing global variable name
Use options.globals to specify browser global variable names corresponding to external modules
crypto (guessing 'crypto')
created ./build/app.js in 791ms
✨  Done in 4.61s.

SRC / main.js

import { hash } from 'crypto';
hash.digest('hex');

rollup.config.js

import babel from 'rollup-plugin-babel'; 
import commonjs from 'rollup-plugin-commonjs';
import resolve from 'rollup-plugin-node-resolve';

export default {
  input: 'src/main.js',
  output: {
    file: './build/app.js',
    format: 'iife'
  },
  plugins: [
    resolve({
      jsnext: true,
      main: true,
      browser: true,
    }),
    commonjs(),
    babel({
      exclude: 'node_modules/**'
    })
  ]
};

package.json

{
  "name": "rollup",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "babel-core": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "lodash-es": "^4.17.4",
    "rollup": "^0.50.0",
    "rollup-plugin-babel": "^3.0.2",
    "rollup-plugin-commonjs": "^8.2.5",
    "rollup-plugin-node-resolve": "^3.0.0"
  },
  "scripts": {
    "build": "rollup -c",
    "dev": "rollup -c -w"
  }
}

Что странно, если я пытаюсь импортировать template от lodash-es Я не получаю никакой ошибки:

import template from 'lodash-es';
console.log('test');

Могу ли я устанавливать только пакеты, предназначенные для браузера?

1 ответ

Решение

При использовании узловых модулей вы должны использовать rollup-plugin-node-builtins, Я добавил следующее к моему rollup.config.js файл:

import babel from 'rollup-plugin-babel';
import commonjs from 'rollup-plugin-commonjs';
import resolve from 'rollup-plugin-node-resolve';
import builtins from 'rollup-plugin-node-builtins';

export default {
  input: 'src/main.js',
  output: {
    file: './build/app.js',
    format: 'iife'
  },
  plugins: [
    builtins(),
    resolve({
      jsnext: true,
      main: true,
      browser: true,
    }),
    commonjs(),
    babel({
      exclude: 'node_modules/**'
    })
  ]
};
Другие вопросы по тегам