非常感谢 @HoPGoldy 大佬对screeps的介绍,新人少走了很多弯路。本文主要针对今天(2022年9月)照做(//www.greatytc.com/p/31f8319bc2cd)时各种报错做补充,请大家仍然先通过大佬文章,再看本文的补充,然后再操作配置环境。
一切都发生在“依赖安装 npm install --save-dev screeps-server-mockup fs-extra”这里。
0. 安装python27,建议用`conda`来做,总不能2022年还全局用python2吧 :-)
1. 首先可以单独安装fs-extra, `npm install --save-dev fs-extra`,此时对环境应该没有特别的要求(我是遇到问题想先安装一个再说所以这样做的,但应该先做下一步,再做本步。
2. 首先切换到node12。建议使用nvm切换(linux,windows都有)。
为何要用node12 见大佬文章评论区和 issue:
* https://github.com/screepers/screeps-server-mockup/issues/51
* https://github.com/laverdet/isolated-vm/issues/184
* https://github.com/screepers/screeps-typescript-starter 里Basic Usage一节明确说了 node12
3. 手动安装webpack `npm install --save-dev webpack@3`
为何,看到了安装 screeps-server-mockup时的报错日志要运行webpack
4. 手动安装vs2019生成工具,必须这个版本,vs2022不行
* 打开 https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/,页面翻到下面,选择2019下载,要登录微软账户
* 登录账户后进入新页面,找到“Build Tools for Visual Studio 2019 (version 16.11)”下载并安装,安装后打开该工具,如图勾选安装
(直接用大佬的图了)
为何不能用vs2022,因为这个版本node带的node-gpy只支持到vs2019,见图
nvm\v12.22.12\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js
参考 https://juejin.cn/post/7102325221650071589
5. 好了,进入conda(Anaconda Prompt (miniconda3))和vs2019环境(重要)来安装 screeps-server-mockup,建议用cmd
* 找到开始菜单中conda和vs2019的快捷方式(Developer Command Prompt for VS 2019)里的具体进入方式
%windir%\System32\cmd.exe "/K" D:\Program_Files\miniconda3\Scripts\activate.bat D:\Program_Files\miniconda3
%comspec% /k "D:\Program_Files\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat"
* 开启管理员模式cmd,依次输入上面两条命令(当然不能直接复制我这里的使用,要用自己的电脑上快捷方式的地址)
* 使用conda开启python2.7环境,这个就不仔细展开了,请网上自行搜索
* 运行`npm config set msvs_version 2019` 和 `npm config set python python2.7`
* 开始安装`npm install --save-dev screeps-server-mockup`
config set msvs_version 和 python这里参考
https://github.com/nodejs/node-gyp#on-windows
https://github.com/Microsoft/nodejs-guidelines/blob/master/windows-environment.md#compiling-native-addon-modules
6. 应该能安装成功了,继续保持上一步的环境中,看大佬文章,新建“mockup.test.ts”文件,当运行·npm run test-integration·时,可能已经好了。但是我是从教程一路安装过来的,安装的 jest 是v29版本,会报错提示不识别“?.”语法,查询后发现node12还不支持jest@^29里的写法(https://segmentfault.com/a/1190000022447139 node14发布才支持),node_modules\jest\node_modules\jest-cli\build\cli\index.js
而jest@^28这里的代码是
要更换前面教程提到的jest的版本@^28,当然顺便把@types/jest也更换吧
```
npm i -D jest@^28 @types/jest@^28
```
再运行`npm run test-integration`就好了,本教程结束,开始继续看大佬文章吧