英文:
the requested module does not provide export name
问题
以下是翻译好的部分:
"as shown in the code posted below. i am creating envVars
to store all the system constants.in index.js
i am importing EnvVars.js
as shown below.
at run time, i receive the following error:
PS C:\xx\xx\projects\nodejs\http\processTIFF-0> node index.js
file:///C:/xx/xx/projects/nodejs/http/processTIFF-0/index.js:3
import {envVars} from './SYS/EnvVars.js'
^^^^^^^
SyntaxError: The requested module './SYS/EnvVars.js' does not provide an export named 'envVars'
?[90m at ModuleJob._instantiate (internal/modules/esm/module_job.js:104:21)?[39m
?[90m at async ModuleJob.run (internal/modules/esm/module_job.js:149:5)?[39m
?[90m at async Loader.import (internal/modules/esm/loader.js:166:24)?[39m
?[90m at async Object.loadESM (internal/process/esm_loader.js:68:5)?[39m
PS C:\Users\Amr.Bakri\projects\nodejs\http\processTIFF-0>
please let me know how to fix it
EnvVars.js:
export function define(name, value) {
Object.defineProperty(exports, name, {
value: value,
enumerable: true,
writable: false
});
}
define("END_POINT_HOST_JK","sf.tzt")
define("END_POINT_PATH_RASTER_IN_POLYGON","/xx/api/process/polygon-3857?polygon=")
define("END_POINT_PATH_RESOLUTION","&resolution=1")
define("WKT_EPSG4326","POLYGON((14.302759232915124 52.037914242476376,14.301196347357946 12.03581482424235,44.306554812125416 32.03367606317161,24.308149593306208 52.03695283888638,14.302759232915124 52.037914242476376))")
index.js:
import {envVars} from './SYS/EnvVars.js'"
英文:
as shown in the code posted below. i am creating envVars
to store all the system constants.in index.js
i am importing EnvVars.js
as shown below.
at run time, i receive the following error:
PS C:\xx\xx\projects\nodejs\http\processTIFF-0> node index.js
file:///C:/xx/xx/projects/nodejs/http/processTIFF-0/index.js:3
import {envVars} from './SYS/EnvVars.js'
^^^^^^^
SyntaxError: The requested module './SYS/EnvVars.js' does not provide an export named 'envVars'
?[90m at ModuleJob._instantiate (internal/modules/esm/module_job.js:104:21)?[39m
?[90m at async ModuleJob.run (internal/modules/esm/module_job.js:149:5)?[39m
?[90m at async Loader.import (internal/modules/esm/loader.js:166:24)?[39m
?[90m at async Object.loadESM (internal/process/esm_loader.js:68:5)?[39m
PS C:\Users\Amr.Bakri\projects\nodejs\http\processTIFF-0>
please let me know how to fix it
EnvVars.js:
export function define(name, value) {
Object.defineProperty(exports, name, {
value: value,
enumerable: true,
writable: false
});
}
define("END_POINT_HOST_JK","sf.tzt")
define("END_POINT_PATH_RASTER_IN_POLYGON","/xx/api/process/polygon-3857?polygon=")
define("END_POINT_PATH_RESOLUTION","&resolution=1")
define("WKT_EPSG4326","POLYGON((14.302759232915124 52.037914242476376,14.301196347357946 12.03581482424235,44.306554812125416 32.03367606317161,24.308149593306208 52.03695283888638,14.302759232915124 52.037914242476376))")
index.js:
import {envVars} from './SYS/EnvVars.js'
答案1
得分: 1
虽然我不确定为什么您需要使用这个`define`函数技巧,但如果您必须这样做,那么请执行以下操作:
function define(name, value) {
Object.defineProperty(envVars, name, {
value: value,
enumerable: true,
writable: false
});
}
// 这是实际的导出
export let envVars = {};
define("END_POINT_HOST_JK","sf.tzt")
define("END_POINT_PATH_RASTER_IN_POLYGON","/xx/api/process/polygon-3857?polygon=")
define("END_POINT_PATH_RESOLUTION","&resolution=1")
define("WKT_EPSG4326","POLYGON((14.302759232915124 52.037914242476376,14.301196347357946 12.03581482424235,44.306554812125416 32.03367606317161,24.308149593306208 52.03695283888638,14.302759232915124 52.037914242476376))");
用于使用的代码:
import {envVars} from './SYS/EnvVars.js'
console.log(envVars.END_POINT_HOST_JK);
(Note: I have provided the translation for the code sections, as requested. If you have any further translation needs, please let me know.)
<details>
<summary>英文:</summary>
Though I'm not sure why you need to do this `define` function gimmick, but in case you must, then do this:
``` lang-js
function define(name, value) {
Object.defineProperty(envVars, name, {
value: value,
enumerable: true,
writable: false
});
}
// this is the actual export
export let envVars = {};
define("END_POINT_HOST_JK","sf.tzt")
define("END_POINT_PATH_RASTER_IN_POLYGON","/xx/api/process/polygon-3857?polygon=")
define("END_POINT_PATH_RESOLUTION","&resolution=1")
define("WKT_EPSG4326","POLYGON((14.302759232915124 52.037914242476376,14.301196347357946 12.03581482424235,44.306554812125416 32.03367606317161,24.308149593306208 52.03695283888638,14.302759232915124 52.037914242476376))");
for consuming:
import {envVars} from './SYS/EnvVars.js'
console.log(envVars.END_POINT_HOST_JK);
Reason your existing example was not working is because you were nowhere exporting envVars
.
答案2
得分: 0
以下是翻译好的部分:
你正在编写一个标准的JavaScript模块,而不是CommonJS模块。
模块中没有隐式的exports
变量。
如果直接执行SYS/EnvVars.js,你会看到以下错误:
ReferenceError: exports在ES模块范围内未定义
之所以将此文件视为ES模块,是因为它具有'.js'文件扩展名,并且'/........../package.json'包含"type": "module"。要将其视为CommonJS脚本,请将其重命名为使用'.cjs'文件扩展名。
在SYS/EnvVars.js的顶部定义并显式导出exports
:
export const exports = {};
或者,采用更符合惯例的方法,摒弃定义函数,只需在导入它们时单独导出每个值,并在导入时创建对象:
import * as exports from './SYS/EnvVars.js';
console.log(exports);
以及
export const END_POINT_HOST_JK = 'sf.tzt';
export const END_POINT_PATH_RASTER_IN_POLYGON = '/xx/api/process/polygon-3857?polygon=';
export const END_POINT_PATH_RESOLUTION = '&resolution=1';
export const WKT_EPSG4326 =
'POLYGON((14.302759232915124 52.037914242476376,14.301196347357946 12.03581482424235,44.306554812125416 32.03367606317161,24.308149593306208 52.03695283888638,14.302759232915124 52.037914242476376))';
英文:
You are writing a standard JavaScript module, not a CommonJS module.
There is no implicit exports
variable scoped to the module.
If you execute SYS/EnvVars.js directly then you would see this error:
> ReferenceError: exports is not defined in ES module scope<br>
> This file is being treated as an ES module because it has a '.js' file extension and '/........../package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
Define, and explicitly export, exports
at the top of SYS/EnvVars.js:
export const exports = {};
Alternatively, for a more idiomatic approach, get rid of your define function and just export each value individually, creating the object when you import them:
import * as exports from './SYS/EnvVars.js';
console.log(exports);
and
export const END_POINT_HOST_JK = 'sf.tzt';
export const END_POINT_PATH_RASTER_IN_POLYGON = '/xx/api/process/polygon-3857?polygon=';
export const END_POINT_PATH_RESOLUTION = '&resolution=1';
export const WKT_EPSG4326 =
'POLYGON((14.302759232915124 52.037914242476376,14.301196347357946 12.03581482424235,44.306554812125416 32.03367606317161,24.308149593306208 52.03695283888638,14.302759232915124 52.037914242476376))';
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论