Я пытаюсь создать сокет-соединение между цветами, используя расширение 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/*"
]
}