1

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

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
4

1 回答 1

2

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

预安装:

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

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

    • 这可能是可选的,我只是在我的案例中安装了 VS C++ 功能。
  4. 巧克力味(链接):

    • 此工具将使您更轻松地node-canvas在 Windows 上安装包的依赖项。
    • 打开PowershellAdministrator执行Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')).
    • 安装 Chocolatey 后,通过以下方式安装node-canvas依赖项choco install -y python2 gtk-runtime microsoft-build-tools libjpeg-turbo您可能会看到一条警告消息visuallstudiotool-vs2017 installation failed,您可以忽略它。在我的情况下,它不会影响结果
  5. GTK 与 cairo 库(链接):

    • 此工具是 package 所需的依赖项node-canvas
    • 安装步骤:
      • 在此处下载预编译的 X64 GTK 包。
      • 将所有内容解压缩到C:\GTK.
  6. Mongochef (链接):

    • 该工具将使您更轻松地恢复 forge-rcdb 的虚拟数据库。
  7. MongoDB:

    • 您可以按照此处的说明在您的计算机上安装 MongoDB,或者改用 MongoDB PaaS mlab

主要装置:

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

配置:

  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. 更改with you MongoDB 连接设置database中的部分。config\development.config.js

  3. resources/db/dev在或resources/db/prod通过Mongochef的 Import 功能恢复虚拟数据库数据。

  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\robotresources\models\dev\robot. 然后,在 Web 浏览器中导航到http://localhost:3000/configurator并鼠标单击Kinematics项目,然后您将看到模型已加载到屏幕上。

  2. 如果您从浏览器开发控制台看到http://localhost:3000/api/forge/user的响应显示HTTP EORROR CODE 404,那么您必须检查 Forge App 的CallBack URL是否用于托管 forge-rcdb在Forge Dev Protal中是http://localhost:3000/api/forge/callback/oauth。(注意。此配置可以更改config\development.config.js

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

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

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

希望能帮助到你。

于 2018-05-11T03:50:22.437 回答