Ошибка: Идентификатор 'Reader' уже был объявлен при объединении fstream с накопительным пакетом. js - PullRequest
1 голос
/ 20 февраля 2020

Я новичок в настройке вещей с помощью Rollup, я пытаюсь настроить приложение CLI для узла, которое будет объединено в один файл cli.bundle. js, который будет выполняться с простым узлом cli.bundle. js без необходимости npm устанавливать что-либо ранее.

Кстати, нам уже удалось сделать это с помощью zeit / pkg, но мы бы хотели отметить, что все исполняемые файлы nodejs связаны внутри, поэтому мы пытаемся работать с накопительным пакетом вместо pkg.

Проблема, с которой мы сталкиваемся, заключается в том, что при прохождении различных узлов node_modules, накопительный пакет. js cra sh с ошибкой:

[!] Error: Identifier 'Reader' has already been declared
../../common/js-common/node_modules/fstream/lib/file-reader.js (7:4)
5: var fs = require("graceful-fs")
6:   , fstream = require("../fstream.js")
7:   , Reader = fstream.Reader
       ^
8:   , inherits = require("inherits")
9:   , mkdir = require("mkdirp")
Error: Identifier 'Reader' has already been declared
    at error (/home/.../src/external-data/external-data-etl/node_modules/rollup/dist/shared/node-entry.js:5400:30)
    at Module.error (/home/.../src/external-data/external-data-etl/node_modules/rollup/dist/shared/node-entry.js:9820:16)
    at tryParse (/home/.../src/external-data/external-data-etl/node_modules/rollup/dist/shared/node-entry.js:9713:23)
    at Module.setSource (/home/.../src/external-data/external-data-etl/node_modules/rollup/dist/shared/node-entry.js:10076:33)
    at Promise.resolve.catch.then.then.then (/home/.../src/external-data/external-data-etl/node_modules/rollup/dist/shared/node-entry.js:12362:20)

При поиске этой ошибки с помощью накопительного пакета, кажется, что люди имели ее больше во время выполнения, чем во время связки, поэтому я понятия не имею, что я могу сделать. Этот дублированный идентификатор находится в стороннем коде, который я не контролирую: (

Вот мой rollup.config. js

Редактировать: я попытался с новым @rollup/plugins, чтобы увидеть если в них было исправление, но у меня все та же проблема.

import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import json from '@rollup/plugin-json';

export default {
    input: 'dist/index.js',
    output: {
        format: 'cjs',
        file: './cli.bundle.js'   
    },
    plugins: [
        commonjs(),
        resolve(),
        json()  // asked and added when parsing 'got' package imported by 'download' package
    ]
};

И наш процесс сборки:

  1. перенос из машинописного текста (sr c) в js (dist) с приложением ts c
  2. bundle (dist) в один исполняемый файл

Мы бы не хотели включать плагин babel или машинописный текст для переноса, чтобы оставаться независимым и, конечно, достаточно (dist) приложения (как этого было достаточно для zeit / pkg).

Есть ли что-то, что мы делаем неправильно?

1 Ответ

1 голос
/ 24 февраля 2020

Проблема в том, что вы зависите, она неправильно закодирована, вам нужно исправить ошибку кода, которую они сделали.

...