从Angular 8 universal迁移到9 universal版本失败:require.resolve不是一个函数。

3

enter image description here

在查找 Angular 错误时,我发现了以下错误:

 [error] TypeError: require.resolve is not a function
        at SchematicImpl.<anonymous> (E:\B2C-NG-9\b2c\node_modules\@nguniversal\express-engine\schematics\migrations\update-9\index.js:42:44)
        at Generator.next (<anonymous>)
        at E:\B2C-NG-9\b2c\node_modules\@nguniversal\express-engine\schematics\migrations\update-9\index.js:20:71
        at new Promise (<anonymous>)
        at __awaiter (E:\B2C-NG-9\b2c\node_modules\@nguniversal\express-engine\schematics\migrations\update-9\index.js:16:12)
        at E:\B2C-NG-9\b2c\node_modules\@nguniversal\express-engine\schematics\migrations\update-9\index.js:38:26
        at MergeMapSubscriber.project (C:\Users\YOURTR~1\AppData\Local\Temp\angular-cli-packages-YWauXm\node_modules\@angular\cli\node_modules\@angular-devkit\schematics\src\rules\call.js:75:24)
        at MergeMapSubscriber._tryNext (C:\Users\YOURTR~1\AppData\Local\Temp\angular-cli-packages-YWauXm\node_modules\@angular\cli\node_modules\rxjs\internal\operators\mergeMap.js:67:27)
        at MergeMapSubscriber._next (C:\Users\YOURTR~1\AppData\Local\Temp\angular-cli-packages-YWauXm\node_modules\@angular\cli\node_modules\rxjs\internal\operators\mergeMap.js:57:18)
        at MergeMapSubscriber.Subscriber.next (C:\Users\YOURTR~1\AppData\Local\Temp\angular-cli-packages-YWauXm\node_modules\@angular\cli\node_modules\rxjs\internal\Subscriber.js:66:18)

2
我成功地将Angular 8迁移到9版本,但在使用ng update @nguniversal/express-engine@9命令迁移Angular Universal 8到9时,遇到了这个问题。 - james stevens
你找到解决方案了吗? - user165242
就我个人而言,我的解决方法是将ngUniversal全部删除,然后使用ng add @universal/express-engine。我已经成功解决了你所提到的问题。 - user165242
2个回答

1

这是我的做法。

在尝试 ng update 后,我在这个文件中暂时替换了代码:node_modules/@nguniversal/express-engine/schematics/migrations/update-9/index.js:36,替换为:

const collectionPath = require.hasOwnProperty('resolve') ? require.resolve('../../collection.json') : '@nguniversal/express-engine/schematics/collection.json';

然后我运行了:

ng update @nguniversal/express-engine@9 --allow-dirty --migrate-only --from=8

migrate-only - 仅迁移,不回滚或删除新的迁移文件


0

在我的项目中,当'@nguniversal'正在更新时,在node_modules安装期间,我使用了来自comment的临时代码。

项目成功迁移,但没有任何变化。只有nguniversal包的版本。

此操作的日志如下:

Installing packages for tooling via npm.
Installed packages for tooling via npm.
Using package manager: 'npm'
Collecting installed dependencies...
Found 69 dependencies.
Fetching dependency metadata from registry...
    Updating package.json with dependency @nguniversal/common @ "9.1.1" (was "8.2.6")...
    Updating package.json with dependency @nguniversal/express-engine @ "9.1.1" (was "8.2.6")...
  UPDATE package.json (5028 bytes)
✔ Packages successfully installed.
** Executing migrations of package '@nguniversal/express-engine' **

> Update @nguniversal/express-engine to version 9.
  UPDATE package.json (5032 bytes)
✔ Packages installed successfully.
  Migration completed.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接