Я хотел бы повторно использовать некоторые части кода как в расширении Chrome, так и в узле. Импорт не работает с узлом. module.export не работает в расширении - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь создать сокет-соединение между цветами, используя расширение chrome.Я использую веб-сокет на Google App Engine в узле JS.

Некоторые части кода являются общими в обеих средах, и я пытаюсь использовать их повторно.

export или import операторы не работают в узле

module.export или require операторы не работают в chrome extesnion

Для узла

// app.js node
import { getRandomPushKey } from '../script/Utils/utils';
//utils.js
module.exports =  { getRandomPushKey };

Ошибка

$ node --experimental-modules app.js
(node:18980) ExperimentalWarning: The ESM module loader is experimental.
/Users/chandrakumar/Desktop/projects/test on the fly/server/app.js:2
import { getRandomPushKey } from '../script/Utils/utils';
       ^

SyntaxError: Unexpected token {
    at Module._compile (internal/modules/cjs/loader.js:703:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at internal/modules/esm/translators.js:84:15
    at Object.meta.done (internal/modules/esm/create_dynamic_module.js:39:9)
    at file:///Users/chandrakumar/Desktop/projects/test%20on%20the%20fly/server/app.js:9:13
    at ModuleJob.run (internal/modules/esm/module_job.js:111:37)
    at processTicksAndRejections (internal/process/task_queues.js:89:5)
    at async Loader.import (internal/modules/esm/loader.js:128:24)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Если я дал

//node
const { getRandomPushKey } = require('../script/Utils/utils');
//js
export default  { getRandomPushKey };

Ошибка

yarn run v1.16.0
$ node --experimental-modules app.js
(node:19021) ExperimentalWarning: The ESM module loader is experimental.
/Users/chandrakumar/Desktop/projects/test on the fly/script/Utils/utils.js:10
export default  { getRandomPushKey };
^^^^^^

SyntaxError: Unexpected token export
    at Module._compile (internal/modules/cjs/loader.js:703:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/Users/chandrakumar/Desktop/projects/test on the fly/server/app.js:2:30)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

В случае расширения хрома

module.exports = { getRandomPushKey }; и в расширении Chrome JS import { getRandomPushKey } from "../Utils/utils.js"; эта ошибка вызывает background.html:1 Uncaught SyntaxError: The requested module '../Utils/utils.js' does not provide an export named 'getRandomPushKey' в расширении Chrome

Если я предоставлю const { getRandomPushKey } = require("../Utils/utils.js"); в Chrome Ext JS, эта ошибка вызывает Chrome StorageHelpers.js:3 Uncaught ReferenceError: require is not define at StorageHelpers.js:3

Версия узла: v12.1.0

Версия Chrome: 74.0.3729.169

Package.json

....
"engines": {
    "node": ">=10.15.0"
  },
"types": "module",
"scripts": {
   ...,
   "start": "node --experimental-modules app.js",
 }
....

manifest.json

{
  "name": "record and replay",
  "manifest_version": 2,
  "version": "1.0.0",
  "permissions": [ "declarativeContent", "storage", "activeTab", "tabs", 
    "http://localhost:8080/", "identity" ],
  "browser_action": {
    "default_popup": "popup.html"
  },
  "background": {
    "page": "background.html",
    "persistent": false
  },
  "web_accessible_resources": [
    "script/*"
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...