在 Windows 10 上构建 Autodesk Forge RCDB 失败并出现 node-gyp 错误

Building Autodesk Forge RCDB on Windows 10 fails with node-gyp errors

在尝试构建 Forge 响应式连接数据库时。我无法在我的 Windows 10 机器上构建此应用程序。我无法成功 运行 “npm install”。我收到以下错误,如下所列。我最终尝试使用预配置的“canvas”,但它仍然没有让节点应用程序 运行。

https://github.com/Autodesk-Forge/forge-rcdb.nodejs

我试过这些解决方案都没有成功:

https://github.com/npm/npm/issues/14543

https://github.com/nodejs/node-gyp#on-windows

https://github.com/Automattic/node-canvas/wiki/Installation---Windows

https://github.com/substack/dnode/issues/181

https://github.com/nodejs/node-gyp/issues/629#issuecomment-153196245

https://www.npmjs.com/package/canvas-prebuilt

> canvas@1.6.10 install D:\DEVELOPMENT\Autodesk\forge-rcdb.nodejs3\node_modules\canvas
> node-gyp rebuild


D:\DEVELOPMENT\Autodesk\forge-rcdb.nodejs3\node_modules\canvas>if not defined npm_config_node_gyp (node "C:\Users\steck\AppData\Roaming\nvm\v7.7.1\node_modules\npm\bin\node-gyp-bin\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "node C:\Users\me\AppData\Roaming\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
module.js:472
    throw err;
    ^

Error: Cannot find module 'D:\DEVELOPMENT\Autodesk\forge-rcdb.nodejs3\node_modules\canvas\node C:\Users\me\AppData\Roaming\npm\node_modules\node-gyp\bin\node-gyp.js'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.Module._load (module.js:418:25)
    at Module.runMain (module.js:605:10)
    at run (bootstrap_node.js:425:7)
    at startup (bootstrap_node.js:146:9)
    at bootstrap_node.js:540:3

这是我在安装了 Windows10 的两台不同的 2 台不同计算机上测试的完整安装和设置步骤。

预安装:

  1. Node.js - 使用 v.6.x and v8.x
  2. Node.js 全局包:

    • npm-windows-升级(link):
      • 此工具会将 npm 移动并安装到 Windows 的特殊文件夹 %appdata%
      • 安装步骤:
        • Administrator打开Powershell并执行Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force.
        • 通过 npm install --global --production npm-windows-upgrade npm-windows-upgrade
        • 安装工具
        • 在 Powershell 中执行 cmd npm-windows-upgrade --npm-version 5.6.0注意。您可以选择任何您想要的版本,例如 6.0.1
    • windows-构建工具(link):
      • 此工具将安装软件包 node-gyp 所需的构建工具。
      • 安装需要一些时间等待构建工具下载安装完成。如果您可能首先看到消息 Successfully installed Python 2.7,但您必须 等待消息 Successfully installed Visual Studio Build Tools. 出现
      • Administrator打开Powershell并通过npm install --global --production windows-build-tools
      • 安装工具
    • node-gyp(link):
      • 软件包 node-canvas 需要此工具,而 运行ning npm install.
      • 正常打开Powershell(比如当前用户)并通过npm install -g node-gyp
      • 安装工具
  3. Visual Studio 2017 (link):

    • 这可能是可选的,我只是在我的案例中使用 VS C++ 功能安装它。
  4. 巧克力 (link):

    • 此工具将使您在 Windows.
    • 上安装包 node-canvas 的依赖项更加轻松
    • Administrator打开Powershell并执行Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')).
    • 安装 Chocolatey 后,通过 choco install -y python2 gtk-runtime microsoft-build-tools libjpeg-turbo 安装 node-canvas 依赖项(您可能会看到一条警告消息 visuallstudiotool-vs2017 installation failed,您可以忽略它。在我的例子中,它没有影响结果)
  5. 带有开罗库的 GTK (link):

    • 此工具需要包 node-canvas.
    • 的依赖项
    • 安装步骤:
      • 下载预编译的 X64 GTK 包 here
      • 将所有内容解压到C:\GTK
  6. Mongochef (link):

    • 这个工具可以让你更轻松地恢复 forge-rcdb 的虚拟数据库。
  7. MongoDB:

    • 您可以按照说明进行操作 here to install MongoDB on your compture , or use MongoDB PaaS mlab

主要安装:

  1. 下载forge-rcdb的源代码并解压到你喜欢的地方。在我的例子中,我把它放在我的桌面上。
  2. 正常打开Powershell(比如当前用户),将目录更改为源代码的解压缩文件夹。例如,在 Powershell 中执行 cd Desktop\forge-rcdb-nodejs-master
  3. 运行 cmd npm install 在源代码文件夹的根目录中。 (编译包node-canvas时可能会看到一些错误信息,但是可以同时看到'copied xxx.c'、'copied xxx.cpp'等,那么可以忽略错误。在我的情况下,运行 forge-rcdb.)
  4. 不是问题

配置:

  1. 用您的编辑器打开 config\development.config.js 并将 viewer 部分的值更改为:

    viewer: {
          viewer3D: 'https://developer.api.autodesk.com/derivativeservice/v2/viewers/viewer3D.js?v=4.0.1',
          threeJS:  'https://developer.api.autodesk.com/derivativeservice/v2/viewers/three.js?v=4.0.1',
          style:    'https://developer.api.autodesk.com/derivativeservice/v2/viewers/style.css?v=4.0.1'
    }
    
  2. 更改 config\development.config.js 中的 database 部分 MongoDB 连接设置。

  3. 通过Mongochef的导入功能恢复resources/db/devresources/db/prod中的虚拟数据库数据。

  4. 正常打开Powershell(比如当前用户)并设置以下环境变量:

    $env:NODE_ENV="development"
    $env:HOT_RELOADING="true"
    $env:FORGE_DEV_CLIENT_ID="YOUR_CLINET_ID"
    $env:FORGE_DEV_CLIENT_SECRET="YOUR_CLINET_SECRET"
    

运行项目

  1. 将Powershell的当前目录更改为forge-rcdb的源代码文件夹并键入npm start

  2. 在您喜欢的浏览器中打开 http://localhost:3000

疑难解答

  1. 您可能无法在浏览器中加载任何模型。如果您要测试功能,请将 resources\models\prod\robot 复制到 resources\models\dev\robot。之后,在 Web 浏览器中导航到 http://localhost:3000/configurator,然后鼠标单击 Kinematics 项目,然后您将在屏幕上看到加载的模型。

  2. 如果看到http://localhost:3000/api/forge/user showing HTTP EORROR CODE 404 from the browser dev console, then you must have to check whether the CallBack URL of your Forge App used to host forge-rcdb in Forge Dev Protal is http://localhost:3000/api/forge/callback/oauth的回复。 (注意。此配置可以在 config\development.config.js 中更改)

    • 之后,您或您的用户必须使用 Autodesk 帐户登录网站,才能从 Forge OAuth 服务获取 3 足令牌,才能在图库页面上传模型。
  3. 如果从http://localhost:3000/api/models/configurator?limit=100&offset=0&search=的响应中得到一个空数组,这意味着您的 MongoDB 集合 configurator.models 中没有任何内容。要解决此问题,您可以通过 Mongochef 将数据库内容 resources\db\dev\configurator.models.json 导入到您的 MongoDB 中。 (注意,请参考配置部分的第3步)

  4. 如果您无法从网页加载任何列出的模型,这意味着您的 resources\models\prodresources\models\dev 以及您的 Forge OSS 存储桶中没有下载的可见气泡.因此,请检查您数据库中的 urn 值是否有前面提到的这些位置的模型。

  5. 如果您发现Trouble Shooting第3项的主要原因是您没有forge-rcdb中列出的模型,那是因为这些模型是Autodesk的私有模型或由其他用户上传不幸的是,他们自己之前可能无法与 public 共享。 要解决此问题,您必须将配置部分第 3 步中提到的 MongoDB 个集合的示例数据更改为您自己的模型。

希望对您有所帮助。