npm запустить сборку для приложения React, используя неверный путь к источнику index.js - PullRequest
0 голосов
/ 08 мая 2018

Моя сборка npm не удалась с этим:

✖ Building demo

Failed to compile with 1 error.

 ERROR  in multi ./node_modules/nwb/polyfills.js ./demo/src/index.js
Module not found: Error: Can't resolve '/Users/david/git/demoapp/demo/src/index.js' in '/Users/david/git/demoapp'
 @ multi ./node_modules/nwb/polyfills.js ./demo/src/index.js
Error running command: Build failed with errors.
Error: Build failed with errors.
at /Users/david/git/demoapp/node_modules/nwb/lib/webpackBuild.js:82:17
at emitRecords.err (/Users/david/git/demoapp/node_modules/webpack/lib/Compiler.js:269:13)
at Compiler.emitRecords (/Users/david/git/demoapp/node_modules/webpack/lib/Compiler.js:375:38)
at emitAssets.err (/Users/david/git/demoapp/node_modules/webpack/lib/Compiler.js:262:10)
at applyPluginsAsyncSeries1.err (/Users/david/git/demoapp/node_modules/webpack/lib/Compiler.js:368:12)
at next (/Users/david/git/demoapp/node_modules/tapable/lib/Tapable.js:218:11)
at Compiler.compiler.plugin (/Users/david/git/demoapp/node_modules/webpack/lib/performance/SizeLimitsPlugin.js:99:4)
at Compiler.applyPluginsAsyncSeries1 (/Users/david/git/demoapp/node_modules/tapable/lib/Tapable.js:222:13)
at Compiler.afterEmit (/Users/david/git/demoapp/node_modules/webpack/lib/Compiler.js:365:9)
at require.forEach.err (/Users/david/git/demoapp/node_modules/webpack/lib/Compiler.js:354:15)
at /Users/david/git/demoapp/node_modules/async/dist/async.js:473:16
at iteratorCallback (/Users/david/git/demoapp/node_modules/async/dist/async.js:1050:13)
at /Users/david/git/demoapp/node_modules/async/dist/async.js:958:16
at /Users/david/git/demoapp/node_modules/graceful-fs/graceful-fs.js:43:10
at FSReqWrap.oncomplete (fs.js:112:15)`

Это неверно in '/Users/david/git/demoapp', поскольку индекс находится в /Users/david/git/demoapp/src или /Users/david/git/demoapp/lib для версии ES5, /Users/david/git/demoapp/es для версии ES6

Мой nwb.config.js выглядит так:

const path = require('path');

function excludeNodeModulesExcept (modules) {
var pathSep = path.sep;
if (pathSep === '\\') { // must be quoted for use in a regexp:
    pathSep = '\\\\';
}
var moduleRegExps = modules.map(function (modName) { return new RegExp("node_modules" + pathSep + modName);});

return function (modulePath) {
    if (/node_modules/.test(modulePath)) {
        for (var i = 0; i < moduleRegExps.length; i++) {
            if (moduleRegExps[i].test(modulePath)) {
                console.log("Allowed babel transpiling of " + modulePath);
                return false;
            }
        }
        return true;
    }
    return false;
};
}

module.exports = {
type: 'react-component',
npm: {
    esModules: true,
    umd: false
},
webpack: {
    rules: {
        babel: {
            exclude: excludeNodeModulesExcept(['kontraktor-client', 'kontraktor-common']),
            options: {
                babelrc: false,
                cacheDirectory: true
            }
        }
    }
}
};

Соответствующая часть моего package.json выглядит следующим образом:

{
"name": "demoapp",
"version": "1.0.0",
"description": "Demo App",
"main": "lib/index.js",
"module": "es/index.js",
"files": [
"css",
"es",
"lib",
"umd"
],
"scripts": {
"build": "nwb build-react-component",
"images": "node imagesServer/index.js",
"serve": "nwb serve-react-app",
"clean": "nwb clean-module",
"start": "npm-run-all --parallel serve images",
"test": "nwb test-react",
"test:coverage": "nwb test-react --coverage",
"test:watch": "nwb test-react --server"
},

Есть ли способ указать nwb, где находится исходный index.js? Я хочу создать версию этого приложения React для ES5.

Другая путаница заключается в том, что в некоторых публикациях и руководствах говорится, что каталог с именем 'dist' используется для вывода встроенного кода из 'npm run build'?

1 Ответ

0 голосов
/ 28 июля 2018

реакция-приложение не поддерживает импорт файлов вне папки src.так короткий ответ; вам придется извлечь '

, или вы можете использовать ссылку npm, но ваш модуль должен экспортировать es5, потому что снова реагирует - приложение не перенесет его для вас.

...