要求不同模块中的相同模块引用不同的对象
Requiring same module in different modules are referencing different objects
我正在尝试访问从两个不同模块中的模块导出的对象。从逻辑上讲,在这两个不同的模块中,它必须指向同一个对象,但事实并非如此。不知何故,我将对象的 属性 设置在一个地方,当我尝试通过不同对象引用的 属性 访问此集合 属性 时(但此 属性 包含或者应该包含对对象的相同引用。)此 属性 的引用不反映更改。还是一样。让我用代码把事情说清楚。
./startup/data/frontend/languages.js
const englishLanguage = {
name:'English'
}
const turkishLanguage = {
name:'Turkish'
}
const languagesData = {englishLanguage,turkishLanguage}
module.exports = {languagesData}
./startup/data/frontend/languageCountryCodes.js
const { languagesData } = require('./languages');
const languageCountryCodesData = {
turkishTR: {
language: languagesData.turkishLanguage,
countryCode: 'TR'
},
englishEN: {
language: languagesData.englishLanguage,
countryCode: 'EN'
},
englishUS: {
language: languagesData.englishLanguage,
countryCode: 'US'
}
};
module.exports = { languageCountryCodesData };
下面是我第一次引用此 languagesData 对象的代码。
./startup/tableDescriptor/frontend/language
const { languagesData } = require('../../data/frontend/languages');
const languagesTable = {
tableName: 'languages',
columns: [
{
name: 'id',
type: 'SERIAL PRIMARY KEY',
autoGenerated: true
},
{
name: 'name',
type: 'VARCHAR NOT NULL'
}
],
uniqueConstraints: [
['name']
],
primaryKey: ['id'],
prodData: languagesData
}
module.exports = { languagesTable };
./startup/tableDescriptor/frontend/language国家代码
const { languageCountryCodesData } = require('../../data/frontEnd/languageCountryCodes');
const { languagesTable } = require('./language');
const languageCountryCodesTable = {
tableName: 'language_country_codes',
columns: [
{
name: 'id',
type: 'SERIAL PRIMARY KEY',
autoGenerated: true
},
{
name: 'languageId',
type: 'INT NOT NULL'
},
{
name: 'countryCode',
type: 'VARCHAR NOT NULL'
}
],
primaryKey: ['id'],
uniqueConstrarints: [
['countryCode']
],
foreignKeys: [
{
key: 'languageId',
table: languagesTable,
reference: 'id',
dataProperty: 'language'
}
],
prodData: languageCountryCodesData
};
module.exports = { languageCountryCodesTable };
当我设置一个不存在的 id 属性 的其中一个 languagesData 值 languagesTable.prodData 我希望它被设置在 languageCountryCodesData.language of prodData 属性 of languageCountryCodesTable目的。 languageCountryCodesData 还引用 languagesData。而languagesTable的prodData属性也引用了languagesData。但他们似乎没有。它们引用两个不同的对象。但是这些不应该引用同一个对象吗?
如果遗漏了什么,请告诉我。
是require语句的字符大小写问题。我用合适的外壳修复了路径,它修复了...
固定
const { languageCountryCodesData } = require('../../data/frontEnd/languageCountryCodes');
到
const { languageCountryCodesData } = require('../../data/frontend/languageCountryCodes');
已将 'frontEnd' 更改为 'frontend'
我正在尝试访问从两个不同模块中的模块导出的对象。从逻辑上讲,在这两个不同的模块中,它必须指向同一个对象,但事实并非如此。不知何故,我将对象的 属性 设置在一个地方,当我尝试通过不同对象引用的 属性 访问此集合 属性 时(但此 属性 包含或者应该包含对对象的相同引用。)此 属性 的引用不反映更改。还是一样。让我用代码把事情说清楚。
./startup/data/frontend/languages.js
const englishLanguage = {
name:'English'
}
const turkishLanguage = {
name:'Turkish'
}
const languagesData = {englishLanguage,turkishLanguage}
module.exports = {languagesData}
./startup/data/frontend/languageCountryCodes.js
const { languagesData } = require('./languages');
const languageCountryCodesData = {
turkishTR: {
language: languagesData.turkishLanguage,
countryCode: 'TR'
},
englishEN: {
language: languagesData.englishLanguage,
countryCode: 'EN'
},
englishUS: {
language: languagesData.englishLanguage,
countryCode: 'US'
}
};
module.exports = { languageCountryCodesData };
下面是我第一次引用此 languagesData 对象的代码。
./startup/tableDescriptor/frontend/language
const { languagesData } = require('../../data/frontend/languages');
const languagesTable = {
tableName: 'languages',
columns: [
{
name: 'id',
type: 'SERIAL PRIMARY KEY',
autoGenerated: true
},
{
name: 'name',
type: 'VARCHAR NOT NULL'
}
],
uniqueConstraints: [
['name']
],
primaryKey: ['id'],
prodData: languagesData
}
module.exports = { languagesTable };
./startup/tableDescriptor/frontend/language国家代码
const { languageCountryCodesData } = require('../../data/frontEnd/languageCountryCodes');
const { languagesTable } = require('./language');
const languageCountryCodesTable = {
tableName: 'language_country_codes',
columns: [
{
name: 'id',
type: 'SERIAL PRIMARY KEY',
autoGenerated: true
},
{
name: 'languageId',
type: 'INT NOT NULL'
},
{
name: 'countryCode',
type: 'VARCHAR NOT NULL'
}
],
primaryKey: ['id'],
uniqueConstrarints: [
['countryCode']
],
foreignKeys: [
{
key: 'languageId',
table: languagesTable,
reference: 'id',
dataProperty: 'language'
}
],
prodData: languageCountryCodesData
};
module.exports = { languageCountryCodesTable };
当我设置一个不存在的 id 属性 的其中一个 languagesData 值 languagesTable.prodData 我希望它被设置在 languageCountryCodesData.language of prodData 属性 of languageCountryCodesTable目的。 languageCountryCodesData 还引用 languagesData。而languagesTable的prodData属性也引用了languagesData。但他们似乎没有。它们引用两个不同的对象。但是这些不应该引用同一个对象吗?
如果遗漏了什么,请告诉我。
是require语句的字符大小写问题。我用合适的外壳修复了路径,它修复了...
固定
const { languageCountryCodesData } = require('../../data/frontEnd/languageCountryCodes');
到
const { languageCountryCodesData } = require('../../data/frontend/languageCountryCodes');
已将 'frontEnd' 更改为 'frontend'