【发布时间】:2021-06-04 16:18:47
【问题描述】:
我有一个 React Native 应用程序。作为发布过程的一部分,我需要运行一个脚本,该脚本使用我的应用程序中的一些代码来生成一个静态文件。具体来说,我的应用程序是一个使用预先计算的棋盘的游戏,计算成本很高,所以我正在构建一个脚本来在发布阶段生成棋盘并将它们存储在本地文件中。我想在与我的应用程序相同的代码库中创建一个脚本,该脚本将导入代码库的其他部分以生成板。例如,我的工作树的一个子集是:
-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();
我可以使用node scripts\GenerateBoards.js 创建文件。下一步是导入Helper.tsx 或Solver.tsx,但我想不出任何咒语让它工作。我试过Helper = require("../lib/Helper.tsx"),但这给了我一些 MODULE_NOT_FOUND 错误。我尝试将GenerateBoards.js 转换为.tsx 文件并执行import * as Helper from "../lib/Helper",但由于不允许从模块外部导入,所以会抱怨。
似乎有一些关于模块或定义模块的概念我不理解。 Typescript's module docs 声明“任何包含顶级导入或导出的文件都被视为一个模块”,所以似乎通过执行import * as ...,我正在创建一个模块。但是,编译器/转译器/运行器似乎声称相反。
【问题讨论】:
-
您想将什么确切的功能导入
GenerateBoards,目的是什么?您尝试将 .tsx 文件导入节点似乎有点奇怪。 -
感谢您的链接。我尝试了
.mjs,但运气不佳。坦率地说,我此时只是尝试使用 JS(尽管想使用 TS),因为我已经陷入了困境,让 TS 工作变得(看似)复杂。也就是说,我能够使用 Typescript 环境自行解决问题,我将添加它作为我自己问题的答案。再次感谢您抽出宝贵时间分享和帮助!
标签: javascript node.js reactjs typescript react-native