使用Keystone v5构建错误 - @keystonejsapp-next与Heroku CLI一起构建错误

问题描述 投票:0回答:2

我试图使用这个Keystone v5 + Next.js上传一个网站,一切都在开发时运行良好,甚至在本地构建。Styled-components + Styled-system,SSR和.babelrc(用于styled-components配置),还有next.config.js(用于jsconfig.json)。但在我做这行代码的时候,使用Heroku CLI,它在上传所有内容后,会出现以下情况

命令行

git push heroku develop:master

由于我在开发分支上测试,所以这样做。

Heroku日志

remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Node.js app detected
remote:        
remote: -----> Creating runtime environment
remote:        
remote:        NPM_CONFIG_LOGLEVEL=error
remote:        YARN_PRODUCTION=true
remote:        NODE_ENV=production
remote:        NODE_MODULES_CACHE=true
remote:        NODE_VERBOSE=false
remote:        
remote: -----> Installing binaries
remote:        engines.node (package.json):  12.12.0
remote:        engines.npm (package.json):   unspecified (use default)
remote:        engines.yarn (package.json):  1.22.4
remote:        
remote:        Resolving node version 12.12.0...
remote:        Downloading and installing node 12.12.0...
remote:        Using default npm version: 6.11.3
remote:        Resolving yarn version 1.22.4...
remote:        Downloading and installing yarn (1.22.4)...
remote:        Installed yarn 1.22.4
remote:        
remote: -----> Installing dependencies
remote:        Installing node modules (yarn.lock)
remote:        yarn install v1.22.4
remote:        [1/4] Resolving packages...
remote:        [2/4] Fetching packages...
remote:        info [email protected]: The platform "linux" is incompatible with this module.
remote:        info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
remote:        info [email protected]: The platform "linux" is incompatible with this module.
remote:        info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
remote:        [3/4] Linking dependencies...
remote:        warning " > [email protected]" has unmet peer dependency "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0".
remote:        warning "@keystonejs/fields > @apollo/[email protected]" has unmet peer dependency "@types/react@^16.8.0".
remote:        warning "@keystonejs/fields > [email protected]" has unmet peer dependency "immutable@>=3.8.1 || >4.0.0-rc".
remote:        warning "@keystonejs/fields > [email protected]" has unmet peer dependency "immutable@>=3.8.1 || >4.0.0-rc".
remote:        warning "react-apollo > @apollo/[email protected]" has unmet peer dependency "@types/react@^16.8.0".
remote:        warning "react-apollo > @apollo/[email protected]" has unmet peer dependency "apollo-utilities@^1.3.2".
remote:        warning "react-apollo > @apollo/[email protected]" has unmet peer dependency "graphql@^14.3.1".
remote:        warning " > [email protected]" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
remote:        warning " > [email protected]" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
remote:        warning "@keystonejs/apollo-helpers > [email protected]" has unmet peer dependency "graphql@^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0".
remote:        warning "@keystonejs/adapter-mongoose > @keystonejs/fields-mongoid > @keystonejs/fields > slate-react > [email protected]" has unmet peer dependency "immutable@>=3.6.2".
remote:        warning "@keystonejs/adapter-mongoose > @keystonejs/fields-mongoid > @keystonejs/fields > slate-react > [email protected]" has unmet peer dependency "immutable@>=3.8.1".
remote:        warning "@keystonejs/apollo-helpers > [email protected]" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
remote:        warning "@keystonejs/apollo-helpers > [email protected]" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
remote:        warning "@keystonejs/apollo-helpers > @apollo/[email protected]" has unmet peer dependency "graphql@^14.3.1".
remote:        warning " > @keystonejs/[email protected]" has unmet peer dependency "express@^4.17.1".
remote:        warning "@keystonejs/app-graphql > @keystonejs/[email protected]" has unmet peer dependency "express@^4.17.1".
remote:        warning " > [email protected]" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
remote:        warning "@keystonejs/app-graphql > @keystonejs/app-graphql-playground > @apollographql/graphql-playground-react > [email protected]" has incorrect peer dependency "react@>=15.5 <16".
remote:        warning "@keystonejs/app-graphql > @keystonejs/app-graphql-playground > @apollographql/graphql-playground-react > [email protected]" has incorrect peer dependency "react-dom@>=15.5 <16".
remote:        warning " > [email protected]" has unmet peer dependency "@types/react@^16.8.0".
remote:        warning " > [email protected]" has unmet peer dependency "graphql@^14.3.1".
remote:        warning "react-apollo > @apollo/[email protected]" has unmet peer dependency "@types/react@^16.8.0".
remote:        warning "react-apollo > @apollo/[email protected]" has unmet peer dependency "graphql@^14.3.1".
remote:        warning " > [email protected]" has unmet peer dependency "react-is@>= 16.8.0".
remote:        [4/4] Building fresh packages...
remote:        Done in 92.86s.
remote:        
remote: -----> Build
remote:        Running build (yarn)
remote:        yarn run v1.22.4
remote:        $ cross-env NODE_ENV=production keystone build
remote: - Initialising Keystone CLI
remote: ℹ Command: keystone build
remote: -  
remote: ✔ Validated project entry file ./index.js
remote: - Initialising Keystone instance
remote: ✔ Initialised Keystone instance
remote: - Exporting Keystone build to ./dist
**remote:        warn  - You have enabled experimental feature(s).
remote: 
remote:        warn  - Experimental features are not covered by semver, and may cause** unexpected or broken application behavior. Use them at your own risk.
remote:        Creating an optimized production build...
remote:        Attention: Next.js now collects completely anonymous telemetry regarding usage.
remote:        This information is used to shape Next.js' roadmap and prioritize features.
remote:        You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
remote:        https://nextjs.org/telemetry
remote:        
remote:        > Using external babel configuration
remote:        > Location: "/tmp/build_a5f2f47908fc7f68e09dd51d79d5e3f7/app/.babelrc"
remote:        
**remote: Failed to compile.
remote: 
remote: ./pages/about-us.js
remote: Module not found: Can't resolve 'components/UI/layout' in '/tmp/build_a5f2f47908fc7f68e09dd51d79d5e3f7/app/pages'
remote: 
remote: ✖ Exporting Keystone build to ./dist
remote: Error: > Build failed because of webpack errors
remote:     at build (/tmp/build_a5f2f47908fc7f68e09dd51d79d5e3f7/node_modules/next/dist/build/index.js:13:917)**
remote:     at async Promise.all (index 2)
remote:     at async Object.exec (/tmp/build_a5f2f47908fc7f68e09dd51d79d5e3f7/node_modules/@keystonejs/keystone/bin/commands/build.js:42:7)
remote: error Command failed with exit code 1.
remote:        info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
remote: 
remote: -----> Build failed
remote:        
remote:        We're sorry this build is failing! You can troubleshoot common issues here:
remote:        https://devcenter.heroku.com/articles/troubleshooting-node-deploys
remote:        
remote:        If you're stuck, please submit a ticket so we can help:
remote:        https://help.heroku.com/
remote:        
remote:        Love,
remote:        Heroku
remote:        
remote:  !     Push rejected, failed to compile Node.js app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !       Push rejected to xxxx.
remote:

是的,我知道这可能是一个webpack配置错误,我不知道什么叫实验性功能。

keystone.js

const { Keystone } = require('@keystonejs/keystone');
const { PasswordAuthStrategy } = require('@keystonejs/auth-password');
const { GraphQLApp } = require('@keystonejs/app-graphql');
const { AdminUIApp } = require('@keystonejs/app-admin-ui');
const { NextApp } = require('@keystonejs/app-next');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const { UserSchema } = require('./models');
const initialiseData = require('./initial-data');

const { MongooseAdapter: Adapter } = require('@keystonejs/adapter-mongoose');

const PROJECT_NAME = 'Website Name';
const adapterConfig = { 
  mongoUri: process.env.MONGO_URI,
  useNewUrlParser: true,
  useFindAndModify: false,
  useUnifiedTopology: true,
};


const keystone = new Keystone({
  name: PROJECT_NAME,
  adapter: new Adapter(adapterConfig),
  onConnect: process.env.CREATE_TABLES !== 'true' && initialiseData,
  cookieSecret: 'long_secret',
  cookie: {
    secure: process.env.NODE_ENV === 'production',
    maxAge: 1000 * 60 * 60 * 24 * 30,
    sameSite: false,
  },
  secureCookies: false,
  sessionStore: new MongoStore({
    url: process.env.MONGO_URI,
    autoReconnect: true,
    secret: 'long_secret',
    mongooseConnection: adapterConfig,
    autoRemove: 'disabled'
  })
});

keystone.createList('User', UserSchema);

    const authStrategy = keystone.createAuthStrategy({
      type: PasswordAuthStrategy,
      list: 'User',
    });

    module.exports = {
      keystone,
      apps: [
        new GraphQLApp(),
        new AdminUIApp({
          enableDefaultRoute: false,
          authStrategy,
        }),
        new NextApp({
          dir: 'app',
        })
      ],
      configureExpress: app => {
        app.set('trust proxy', 1);
      }
    };

我不太确定我做错了什么,也不知道我需要在next.config.js做什么配置,因为我只有这个配置。

module.exports = {
  experimental: {
    jsconfigPaths: true,
  }
}

不管有没有它,都会给我同样的错误,只是路径发生了变化,而且这个错误只发生在页面文件夹上。

文件夹结构

./app
 |– api/
   |– apifile.js
 |
 |– components/
   |– ...componentsfiles.js
 |
 |– hooks/
   |– ...hooksfiles.js
 |
 |– pages/
   |– ...pagesfiles.js
 |
 |– public/
   |– assets/
 |
 |– utils
   |– style
   |_
     |– ...styles.js
   |– ...otherutils.js
 |
 |– .babelrc
 |
 |– jsconfig.json
 |
 |– next.config.js
./models/
./index.js (keystone.js)
./initial-data.js
./package.json

这是我的package.json文件

{
  "name": "xxxx-xxxx",
  "description": "xxxx xxxx",
  "private": true,
  "version": "5.0.7",
  "author": "Andler Develops",
  "repository": "https://github.com/keystonejs/keystone/tree/master/packages/create-keystone-app/example-projects/starter",
  "homepage": "https://github.com/keystonejs/keystone",
  "license": "MIT",
  "engines": {
    "node": "12.12.0",
    "yarn": "1.22.4"
  },
  "scripts": {
    "dev": "cross-env NODE_ENV=development DISABLE_LOGGING=true keystone dev",
    "build": "cross-env NODE_ENV=production keystone build",
    "start": "cross-env NODE_ENV=production keystone start",
    "create-tables": "cross-env CREATE_TABLES=true keystone create-tables"
  },
  "dependencies": {
    "@keystonejs/adapter-mongoose": "^8.1.0",
    "@keystonejs/apollo-helpers": "^5.1.4",
    "@keystonejs/app-admin-ui": "^6.0.0",
    "@keystonejs/app-graphql": "^5.1.7",
    "@keystonejs/app-next": "^5.1.2",
    "@keystonejs/auth-password": "^5.1.7",
    "@keystonejs/field-content": "^6.0.1",
    "@keystonejs/fields": "^10.0.0",
    "@keystonejs/file-adapters": "^6.0.2",
    "@keystonejs/keystone": "^9.0.0",
    "@material-ui/core": "^4.10.0",
    "@material-ui/lab": "^4.0.0-alpha.54",
    "@styled-system/theme-get": "^5.1.2",
    "aos": "^2.3.4",
    "apollo-cache-inmemory": "^1.6.6",
    "apollo-client": "^2.6.10",
    "apollo-link-http": "^1.5.17",
    "connect-mongo": "^3.2.0",
    "cross-env": "^7.0.2",
    "dotenv": "^8.2.0",
    "envy": "^2.0.0",
    "express-session": "^1.17.1",
    "framer-motion": "^1.11.0",
    "graphql-tag": "^2.10.3",
    "next": "^9.4.4",
    "react": "^16.13.1",
    "react-apollo": "^3.1.5",
    "react-dom": "^16.13.1",
    "react-helmet": "^6.0.0",
    "react-icons": "^3.10.0",
    "react-lazy-load-image-component": "^1.5.0-beta.0",
    "rebass": "^4.0.7",
    "slugify": "^1.4.0",
    "styled-components": "^5.1.1",
    "styled-system": "^5.1.5"
  },
  "devDependencies": {
    "babel-plugin-styled-components": "^1.10.7",
    "prettier": "2.0.5"
  }
}
heroku webpack build next.js keystonejs
2个回答
0
投票

我昨天遇到了这个问题,它在本地运行,但当我部署时却不能,我得到了你所得到的错误。我把我的依赖关系从 nextjs package.json 移到了项目根目录下的 keystone package.json 中。我完全删除了我在 nextjs 文件夹中的 node_modules,因为我想它就是不看它。


0
投票

我在本地机器上也没有问题,但在docker容器中构建时收到了错误。我把核心包的版本改成了初学者指南中的版本。

"next": "9.3.5",
"react": "16.13.1",
"react-dom": "16.13.1",

我不知道为什么,但它帮助了我。我失去了超过4个小时调试这个sh**... ...

© www.soinside.com 2019 - 2024. All rights reserved.