Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在我的React本机应用程序中创建脚本_Javascript_Node.js_Reactjs_Typescript_React Native - Fatal编程技术网

Javascript 如何在我的React本机应用程序中创建脚本

Javascript 如何在我的React本机应用程序中创建脚本,javascript,node.js,reactjs,typescript,react-native,Javascript,Node.js,Reactjs,Typescript,React Native,我有一个本地应用程序。作为发布过程的一部分,我需要运行一个脚本,该脚本使用我的应用程序中的一些代码生成一个静态文件。具体来说,我的应用程序是一款使用预计算板的游戏,计算成本很高,因此我正在构建一个脚本,在发布阶段生成这些板,并将它们存储在本地文件中。我想在与我的应用程序相同的代码库中创建一个脚本,该脚本将导入代码库的其他部分以生成电路板。例如,我的工作树的一个子集是: -lib \-Helper.tsx -Solver.tsx -scripts \-GenerateBoards.js

我有一个本地应用程序。作为发布过程的一部分,我需要运行一个脚本,该脚本使用我的应用程序中的一些代码生成一个静态文件。具体来说,我的应用程序是一款使用预计算板的游戏,计算成本很高,因此我正在构建一个脚本,在发布阶段生成这些板,并将它们存储在本地文件中。我想在与我的应用程序相同的代码库中创建一个脚本,该脚本将导入代码库的其他部分以生成电路板。例如,我的工作树的一个子集是:

-lib
 \-Helper.tsx
  -Solver.tsx
-scripts
 \-GenerateBoards.js
  -generated_boards.out
App.tsx
package.json
tsconfig.json
Helper.tsx
Solver.tsx
是独立文件,没有导入
GenerateBoards.js
需要导入这两个文件,并使用其自身的内部逻辑生成电路板,并将它们写入
generated_boards.out

我有一个版本的
GenerateBoards.js
将编写该文件,例如:

fs = require('fs');
function main() {
  fs.writeFile(
    './scripts/generated_boards.out',
    'Hello, World!',
    function (err) {
      if (err) return console.log(err);
      console.log("Finished writing file.");
    });
}
main();
我可以使用
节点脚本\GenerateBoards.js
创建文件。下一步是导入
Helper.tsx
Solver.tsx
,但我想不出任何咒语来让它工作。我尝试了
Helper=require(“../lib/Helper.tsx”)
,但这给了我一些模块未找到的错误。我曾尝试将
GenerateBoards.js
转换为
.tsx
文件,并从“./lib/Helper”以助手身份执行
import*,但由于不允许从模块外部导入,因此出现了问题


似乎有一些关于模块或定义模块的概念我不理解。声明“任何包含顶级导入或导出的文件都被视为一个模块”,这样看来,通过将
导入*作为…
,我正在创建一个模块。但是,编译器/transpiler/runner似乎提出了相反的要求。

我能够通过在React原生项目的子目录中正确设置一个模块来解决这个问题

结构 index.tsx package.json tsconfig.json 现在,我的普通Typescript开发环境工作正常
GenerateBoards.tsx
可以导入
Helper.tsx
Solver.tsx
。要运行脚本和/或向其添加依赖项,我首先将
cd
放入该文件夹,然后像运行任何其他Typescript环境一样运行命令,例如:

cd scripts
npm i some_package
npx ts-node index.tsx

这很好,因为它与我的“base”package.json完全隔离,它拥有我的所有应用程序依赖项,否则这些依赖项将被我的脚本中只需要的内容所污染。

您试图导入到
GenerateBoards
中的确切功能是什么?目的是什么?您试图将.tsx文件导入节点似乎有点奇怪。感谢您的链接,这可能会有所帮助。我试过
.mjs
,但运气不太好。坦白地说,我只是在尝试使用JS(尽管我想使用TS),因为我遇到了麻烦,让TS工作变得(似乎)复杂。也就是说,我能够使用Typescript环境自己解决这个问题,我将添加它作为我自己问题的答案。再次感谢您抽出时间与我们分享和帮助!
import { GenerateBoards } from "./GenerateBoards";

async function main() {
  const generateBoards = new GenerateBoards();

  await generateBoards.generate();
}

main().then(() => console.log("Complete."));
{
  "module": "esnext"
}
{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "jsx": "react",
    "lib": ["dom", "esnext"],
    "moduleResolution": "node",
    "noEmit": true,
    "resolveJsonModule": true,
    "strict": true,
    "noImplicitAny": false,
    "target": "es2017"
  }
}
cd scripts
npm i some_package
npx ts-node index.tsx