Как установить node-win-shortcut с помощью npm - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь добавить нативные уведомления Windows в Zulip Electron с помощью модуля electron-windows-notifications.

Итак, я читал пример кода, указанный на https://github.com/felixrieseberg/electron-windows-notifications/blob/master/samples/shortcut.js, который создает ярлык для приложения и необходим для работы уведомлений.

Код также приведен ниже:

const shortcut = require('node-win-shortcut')
const appId = 'electron-windows-notifications'

shortcut.createShortcut(process.execPath, 'node', appId)

Я запустил npm install node-win-shortcut для установки пакета.Однако, когда я добавляю const shortcut = require('node-win-shortcut'); в мой файл, VS Code показывает ошибку:

Could not find a declaration file for module 'node-win-shortcut'. '.../zulip-electron/node_modules/node-win-shortcut/index.js' implicitly has an 'any' type. Try 'npm install @types/node-win-shortcut' if it exists or add a new declaration (.d.ts) file containing 'declare module 'node-win-shortcut'';

Это действительно правильно, так как node-win-shortcut/index.js просто имеет:

module.exports = require('./build/Release/node_win_shortcut_bindings.node');

Я не знаю, как получить доступ к методу createShortcut().Я подозреваю, что моя установка node-win-shortcut не полностью завершена, и некоторые процессы сборки все еще остаются.

1 Ответ

0 голосов
/ 07 марта 2019

Похоже, вы используете TypeScript.Если вы хотите использовать библиотеки JS из TypeScript (используя строгие проверки, такие как noImplicitAny), вы должны иметь объявления типов для модулей, которые вы хотите использовать.Проект DefinuallyTyped в GitHub предоставляет файлы объявлений типов для пакетов NPM, которые не являются самостоятельными, и публикуются в организации @ types в NPM.Если пакет не поставляется с определениями типов, вы можете посмотреть его здесь , чтобы узнать, есть ли пакет с ними.

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

declare module 'node-win-shortcut' {
  function createShortcut(path: String, name: String, appId: String): void
}

Если вы поместите это объявление типа в файл (то есть node-win-shorcut.d.ts) и импортируете его там, где вам нужно, вам следуетбудьте готовы.

Если по какой-либо причине это не работает, вы можете использовать объявления типов DefiniteTyped в качестве справочного материала для моделирования своих собственных, например, этот очень простой для is-number пакет.


В качестве отдельного примечания причина, по которой вы не видите сам метод в коде JavaScript, заключается в том, что привязки на самом деле построены наустановка из собственного кода вы можете увидеть здесь (как вы можете себе представить, для создания ярлыка в Windows требуются привязки собственного кода, которые должны выполняться в системе Windows - npm i node-win-shorcut не удастся включитьLinux или MacOS).Вы можете заглянуть в каталог node_modules/node-win-shortcut, чтобы увидеть встроенный артефакт в файле, указанном в файле index.js.

...