Je n'importe que discord-rpc et n'ai que main.ts. En utilisant également les plugins rollup typscript et node-resolve.

main.ts importer :

const { Client } = require("discord-rpc");

package.json scripts et dépendances :

{
  "main": "main.js",
  "scripts": {
    "dev": "rollup --config rollup.config.js -w",
    "build": "rollup --config rollup.config.js"
  },
  "devDependencies": {
    "@rollup/plugin-commonjs": "^15.1.0",
    "@rollup/plugin-json": "^4.1.0",
    "@rollup/plugin-node-resolve": "^9.0.0",
    "@rollup/plugin-typescript": "^6.0.0",
    "@types/node": "^14.14.2",
    "obsidian": "https://github.com/obsidianmd/obsidian-api/tarball/master",
    "rollup": "^2.32.1",
    "tslib": "^2.0.3",
    "typescript": "^4.0.3"
  },
  "dependencies": {
    "discord-rpc": "^3.1.4"
  }
}

rollup.config.js:

import typescript from '@rollup/plugin-typescript';
import {nodeResolve} from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';

export default {
  input: [
    'main.ts',
  ],
  output: {
    dir: '.',
    sourcemap: 'inline',
    format: 'cjs',
    exports: 'default'
  },
  external: ['obsidian', 'electron'],
  plugins: [
    typescript(),
    commonjs(),
    nodeResolve({browser: true}),
  ]
};

Dois-je utiliser une alternative à rollup.js ?

Modifier : J'ai essayé de changer const { Client } = require("discord-rpc"); en import { Client } from "discord-rpc"; mais j'obtiens toujours Error: Cannot find module 'discord-rpc'

Modification 2 : En gardant ce changement :

import { Client } from "discord-rpc";

J'ai édité rollup.config.js :

import typescript from '@rollup/plugin-typescript';
import {nodeResolve} from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';

export default {
  input: [
    'main.ts',
  ],
  output: {
    dir: '.',
    sourcemap: 'inline',
    format: 'cjs',
    exports: 'default'
  },
  external: ['obsidian', 'electron'],
  plugins: [
    nodeResolve({browser: true}), // Moving this up.
    typescript(),
    commonjs(),
  ]
};

N'obtenez plus cette erreur au moment de l'exécution :

Error: Cannot find module 'discord-rpc'

Mais j'obtiens ceci lors de la construction:

(!) Unresolved dependencies
https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency
timers (imported by node_modules/discord-rpc/src/client.js, timers?commonjs-external)
events (imported by node_modules/discord-rpc/src/client.js, events?commonjs-external, node_modules/discord-rpc/src/transports/ipc.js, node_modules/discord-rpc/src/transports/websocket.js)

Cela ne fonctionne pas non plus comme prévu, mais je ne sais pas si cela est dû à mon code ou à mon rollup...

2
Luke Leppan 6 nov. 2020 à 14:52

1 réponse

Meilleure réponse

Bon alors j'ai résolu le problème !

J'ai du déplacer quelques trucs : rollup.config.js :

import typescript from '@rollup/plugin-typescript';
import {nodeResolve} from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';

export default {
  input: [
    'main.ts',
  ],
  output: {
    dir: '.',
    sourcemap: 'inline',
    format: 'cjs',
    exports: 'default'
  },
  external: ['obsidian', 'electron', 'net', 'events', 'timers'],
  plugins: [
    nodeResolve({browser: true, preferBuiltins: false}),
    typescript(),
    commonjs(),
  ]
};

package.json:

{
  "dependencies": {
    "@types/discord-rpc": "^3.0.4",
    "discord-rpc": "^3.1.4"
  }
}

main.ts importer :

import { Client } from "discord-rpc";
0
Luke Leppan 6 nov. 2020 à 17:26