在 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 台不同计算机上测试的完整安装和设置步骤。
预安装:
- Node.js - 使用 v.6.x and v8.x
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
安装工具
Visual Studio 2017 (link):
- 这可能是可选的,我只是在我的案例中使用 VS C++ 功能安装它。
巧克力 (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
,您可以忽略它。在我的例子中,它没有影响结果)
带有开罗库的 GTK (link):
- 此工具需要包
node-canvas
. 的依赖项
- 安装步骤:
- 下载预编译的 X64 GTK 包 here。
- 将所有内容解压到
C:\GTK
。
Mongochef (link):
- 这个工具可以让你更轻松地恢复 forge-rcdb 的虚拟数据库。
MongoDB:
主要安装:
- 下载forge-rcdb的源代码并解压到你喜欢的地方。在我的例子中,我把它放在我的桌面上。
- 正常打开
Powershell
(比如当前用户),将目录更改为源代码的解压缩文件夹。例如,在 Powershell 中执行 cd Desktop\forge-rcdb-nodejs-master
。
- 运行 cmd
npm install
在源代码文件夹的根目录中。 (编译包node-canvas
时可能会看到一些错误信息,但是可以同时看到'copied xxx.c'、'copied xxx.cpp'等,那么可以忽略错误。在我的情况下,运行 forge-rcdb.) 不是问题
配置:
用您的编辑器打开 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'
}
更改 config\development.config.js
中的 database
部分 MongoDB 连接设置。
通过Mongochef的导入功能恢复resources/db/dev
或resources/db/prod
中的虚拟数据库数据。
正常打开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"
运行项目
将Powershell的当前目录更改为forge-rcdb的源代码文件夹并键入npm start
在您喜欢的浏览器中打开 http://localhost:3000。
疑难解答
您可能无法在浏览器中加载任何模型。如果您要测试功能,请将 resources\models\prod\robot
复制到 resources\models\dev\robot
。之后,在 Web 浏览器中导航到 http://localhost:3000/configurator,然后鼠标单击 Kinematics
项目,然后您将在屏幕上看到加载的模型。
如果看到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 足令牌,才能在图库页面上传模型。
如果从http://localhost:3000/api/models/configurator?limit=100&offset=0&search=的响应中得到一个空数组,这意味着您的 MongoDB 集合 configurator.models
中没有任何内容。要解决此问题,您可以通过 Mongochef 将数据库内容 resources\db\dev\configurator.models.json
导入到您的 MongoDB 中。 (注意,请参考配置部分的第3步)
如果您无法从网页加载任何列出的模型,这意味着您的 resources\models\prod
或 resources\models\dev
以及您的 Forge OSS 存储桶中没有下载的可见气泡.因此,请检查您数据库中的 urn
值是否有前面提到的这些位置的模型。
如果您发现Trouble Shooting第3项的主要原因是您没有forge-rcdb中列出的模型,那是因为这些模型是Autodesk的私有模型或由其他用户上传不幸的是,他们自己之前可能无法与 public 共享。 要解决此问题,您必须将配置部分第 3 步中提到的 MongoDB 个集合的示例数据更改为您自己的模型。
希望对您有所帮助。
在尝试构建 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 台不同计算机上测试的完整安装和设置步骤。
预安装:
- Node.js - 使用 v.6.x and v8.x
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
需要此工具,而 运行ningnpm install
. - 正常打开
Powershell
(比如当前用户)并通过npm install -g node-gyp
安装工具
- 软件包
- npm-windows-升级(link):
Visual Studio 2017 (link):
- 这可能是可选的,我只是在我的案例中使用 VS C++ 功能安装它。
巧克力 (link):
- 此工具将使您在 Windows. 上安装包
- 以
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
,您可以忽略它。在我的例子中,它没有影响结果)
node-canvas
的依赖项更加轻松带有开罗库的 GTK (link):
- 此工具需要包
node-canvas
. 的依赖项
- 安装步骤:
- 下载预编译的 X64 GTK 包 here。
- 将所有内容解压到
C:\GTK
。
- 此工具需要包
Mongochef (link):
- 这个工具可以让你更轻松地恢复 forge-rcdb 的虚拟数据库。
MongoDB:
主要安装:
- 下载forge-rcdb的源代码并解压到你喜欢的地方。在我的例子中,我把它放在我的桌面上。
- 正常打开
Powershell
(比如当前用户),将目录更改为源代码的解压缩文件夹。例如,在 Powershell 中执行cd Desktop\forge-rcdb-nodejs-master
。 - 运行 cmd
npm install
在源代码文件夹的根目录中。 (编译包node-canvas
时可能会看到一些错误信息,但是可以同时看到'copied xxx.c'、'copied xxx.cpp'等,那么可以忽略错误。在我的情况下,运行 forge-rcdb.) 不是问题
配置:
用您的编辑器打开
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' }
更改
config\development.config.js
中的database
部分 MongoDB 连接设置。通过Mongochef的导入功能恢复
resources/db/dev
或resources/db/prod
中的虚拟数据库数据。正常打开
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"
运行项目
将Powershell的当前目录更改为forge-rcdb的源代码文件夹并键入
npm start
在您喜欢的浏览器中打开 http://localhost:3000。
疑难解答
您可能无法在浏览器中加载任何模型。如果您要测试功能,请将
resources\models\prod\robot
复制到resources\models\dev\robot
。之后,在 Web 浏览器中导航到 http://localhost:3000/configurator,然后鼠标单击Kinematics
项目,然后您将在屏幕上看到加载的模型。如果看到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 足令牌,才能在图库页面上传模型。
如果从http://localhost:3000/api/models/configurator?limit=100&offset=0&search=的响应中得到一个空数组,这意味着您的 MongoDB 集合
configurator.models
中没有任何内容。要解决此问题,您可以通过 Mongochef 将数据库内容resources\db\dev\configurator.models.json
导入到您的 MongoDB 中。 (注意,请参考配置部分的第3步)如果您无法从网页加载任何列出的模型,这意味着您的
resources\models\prod
或resources\models\dev
以及您的 Forge OSS 存储桶中没有下载的可见气泡.因此,请检查您数据库中的urn
值是否有前面提到的这些位置的模型。如果您发现Trouble Shooting第3项的主要原因是您没有forge-rcdb中列出的模型,那是因为这些模型是Autodesk的私有模型或由其他用户上传不幸的是,他们自己之前可能无法与 public 共享。 要解决此问题,您必须将配置部分第 3 步中提到的 MongoDB 个集合的示例数据更改为您自己的模型。
希望对您有所帮助。