【问题标题】:How to load a variable form my app into package.json?如何将我的应用程序中的变量加载到 package.json 中?
【发布时间】:2021-06-19 15:47:52
【问题描述】:

我知道这听起来就像使用全局变量一样简单,但我不太确定。

这是我的情况:

  • 我的 React 应用程序的 /src 目录中有多个文件,我们称它们为 src/a.jssrc/b.js
  • 这些文件中的每一个都会导出一个对象,然后我会在我的应用程序中使用该对象:

./src/a.js:

export default {
  filename: 'a',
  foo: 'bar',
};

./src/b.js:

export default {
  filename: 'b',
  foo: 'bar',
  blah: 'hah',
};

现在我有一个命令来检查这些文件中的对象结构是否匹配(许多开发人员每天都会多次更改它们),所以当我在终端中执行npm check 时,它将返回false以上输入,因为blah 不存在于两个文件中。

我的package.json 看起来像这样:

"scripts": {
  "check": "node check.js runCheck",
  /.../
}

我的问题是:我该如何加载这些变量以在package.json中进行比较

我有一个文件名为:

./check.js:

function check(files) {
 // checking files there
};

module.exports.check = check;

方法 #1 - 导入

这是一个构建文件,不是应用程序本身的一部分,所以当我尝试这样做时:

./check.js:

import a from './src/a';
import b from './src/b';

我明白了:

语法错误:不能在模块外使用 import 语句。

方法 #2 - 要求

这会带来麻烦,因为我在我的应用程序中使用导入,而不是模块,因此这样做:

./check.js:

const a = require('./src/a');
const b = require('./src/b');

返回:

错误:找不到模块“./src/a”。

当然,我不能在 a.js/b.js 文件中执行 module.exports,因为它们是我的应用程序的一部分,它们应该使用导出,我尝试过同时使用 export 和 @987654344 @,但效果不佳,看起来很糟糕。

我该如何解决这个问题?我是否应该使用一些文件加载​​器加载文件,将其解析为 JSON 然后进行比较?或者也许有更简单的方法?

【问题讨论】:

    标签: javascript node.js reactjs webpack


    【解决方案1】:

    您需要使用类似 esm (https://github.com/standard-things/esm) 的东西来运行带有模块支持的节点。

    应该很简单:

    npm install esm

    然后将您的包脚本更新为:

    "check": "node -r esm check.js runCheck",

    编辑顺便说一句,一个非常清晰且结构良好的问题。

    【讨论】:

    • 谢谢你的好话,我尽力了,但有点害怕问题可能有点太长,我很高兴它不是给你的。您的解决方案就像一个魅力。我不是以英语为母语的人,我很想再问你一个问题——如果你穿上我的鞋,你会如何寻找这个问题的答案?我试过用谷歌搜索它,浏览了无数关于 SO 的问题,但没有运气......我认为它本身不是 FE,而更像是 node.js 的东西?无论如何,再次感谢您,这真的很有帮助且简单明了!
    • 在 Google 上尝试正确的事情可能会很棘手 :) 如果是我,我可能会搜索“节点模块导入导出”,然后浏览前几篇文章或链接。老实说,我不会意识到你不是英国人,写得很好。
    猜你喜欢
    • 1970-01-01
    • 2019-09-13
    • 2018-12-09
    • 2010-09-05
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多